HTTPS
HTTPS (HyperText Transfer Protocol Secure)
: HTTP에 보안 계층을 추가한 프로토콜로, 웹에서 안전하게 데이터를 주고받기 위해 사용된다.
- 주로 금융 거래, 로그인 정보 전송 등 민감한 데이터를 보호하기 위해 사용되며, HTTP와 달리 통신이 암호화된다.
- SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security)라는 암호화 프로토콜을 사용하여 데이터의 기밀성과 무결성을 보장한다.
SSL/TLS
SSL과 TLS는 네트워크 통신 보안을 위한 암호화 프로토콜이다.
SSL (Secure Sockets Layer)
: 초기 보안 프로토콜로, 데이터 전송 시 암호화를 통해 보안을 강화했다.
- SSL은 여러 버전을 거쳐 발전했지만, 보안상의 문제로 개선이 필요해 이후 TLS로 대체되었다.
TLS (Transport Layer Security)
: SSL을 개선한 버전으로, 암호화, 인증, 무결성 검증을 통해 데이터를 보호한다.
- 여러 TLS 버전이 있지만, 최신 버전일수록 보안이 강화된다.
- 현재 대부분의 웹 사이트는 HTTPS를 통해 TLS를 사용하며, 브라우저와 서버 간에 안전한 연결을 제공한다.
대칭 키 암호화 방식
대칭 키 암호화(Symmetric Key Encryption)
: 하나의 동일한 키로 데이터를 암호화하고 복호화하는 방식
- 송신자와 수신자가 같은 키를 공유하고 있어야만 데이터를 안전하게 주고받을 수 있다.
- 장점
- 암호화 및 복호화 속도가 빠르고 효율적이다.
- 키 길이가 상대적으로 짧다.
- 단점
- 안전한 키 교환이 어렵다.
→ 만약 키가 유출되면, 제3자가 데이터를 해독할 수 있는 위험이 있다.
- 안전한 키 교환이 어렵다.
- 대표 알고리즘: AES, DES, 3DES
- 주 용도: 대용량 데이터 암호화
비대칭 키(공개 키) 암호화 방식
비대칭 키 암호화(Asymmetric Key Encryption)
: 암호화와 복호화에 서로 다른 키인 공개 키와 개인 키를 사용하는 방식
- 일반적으로 공개키로 암호화하고, 개인키로 복호화하는 방식으로 사용된다.
- 개인키는 공개되지 않기 때문에 데이터의 보안을 유지할 수 있다.
- 공개 키: 누구에게나 공개할 수 있는 키, 데이터를 암호화하는 데 사용
- 개인 키: 비밀로 유지해야 하는 키, 공개키로 암호화된 데이터를 복호화하는 데 사용
- 개인키는 공개되지 않기 때문에 데이터의 보안을 유지할 수 있다.
- 장점
- 대칭키 방식보다 보안이 강화되어 키를 안전하게 공유할 필요가 없다.
- 단점
- 암호화 및 복호화 속도가 느리고 연산 비용이 높다.
- 키 길이가 상대적으로 길다.
- 대표 알고리즘: RSA, ECC
- 주 용도: 키 교환, 전자서명, 인증
전자 서명
전자 서명(Digital Signature)
: 데이터의 위조 및 변조를 방지하고 신원 인증을 보장하기 위해 사용되는 기술
- 주로 비대칭키 암호화 방식을 사용합니다.
- 동작 과정
- 문서의 해시값을 생성한다.
- 송신자의 개인 키로 해시값을 암호화한다. (⇒ 서명 생성)
- 수신자는 송신자의 공개 키로 서명을 복호화한다.
- 문서의 해시값과 복호화 된 해시값을 비교하여 검증한다.
- 주 용도: 금융 거래, 전자 계약, SSL/TLS 인증서
⭐️ HTTPS 암호화 과정 (SSL Handshake의 동작 과정)
- 클라이언트 Hello
- 클라이언트가 서버에 연결 요청과 함께 지원하는 암호화 방식 목록을 보낸다.
- 서버 Hello
- 서버는 암호화 방식을 선택하고, 자신의 SSL 인증서(공개 키 포함)를 클라이언트에 보낸다.
- 서버 인증서 검증
- 클라이언트는 인증서의 유효성을 확인하여 서버의 신원을 검증한다.
- 프리마스터 시크릿 생성 및 전송
- 클라이언트가 프리마스터 시크릿(임시 키)을 생성하여 서버의 공개 키로 암호화 한 후 서버에 전송한다.
- 세션 키 생성
- 클라이언트와 서버는 프리마스터 시크릿을 이용해 대칭 키(세션 키)를 생성한다.
- 암호화 통신 시작
- 세션 키를 이용해 대칭 키 암호화로 안전한 데이터 통신을 시작한다.