암호화 프로토콜
SSL(Secure Sockets Layer)/ TLS(Transport Layer Security)
1. 주요 목적
1.1 기밀성(Confidentiality)
데이터가 암호화되어 네트워크를 통해 전송되므로, 중간에 누군가가 데이터를 가로채더라도 내용을 알 수 없음.
** 비대칭 암호화와 대칭 암호화 방식을 사용
1.2 무결성(Integrity)
데이터가 전송 중에 변조되지 않도록 보장
** 데이터에 디지털 서명을 추가하여 변조 여부를 확인
1.3 인증(Authentication)
서버와 클라이언트가 서로 신뢰할 수 있는지 확인
** 인증서를 사용하여 서버의 정당성을 검증
2. SSL의 작동 원리
2.1 핸드쉐이크(Handshake) 과정
클라이언트가 연결 요청
클라이언트는 서버에 SSL 연결 요청을 보내며, 지원 가능한 암호화 알고리즘 및 TLS 버전을 전달
서버가 인증서 전송
서버는 클라이언트에게 자신의 SSL 인증서를 보냄
→ 이 인증서는 서버의 공개 키와 인증 기관의 서명을 포함클라이언트가 인증서 검증
클라이언트는 서버 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 확인
→ 인증서의 유효성을 검증세션 키 설정
클라이언트와 서버는 공개 키 암호화를 사용해 세션 키를 교환
→ 이후 통신은 대칭 암호화를 사용해 데이터를 암호화SSL 연결 시작
3. SSL 인증서
SSL 인증서는 서버의 신뢰성을 보장하기 위해 사용되며, 인증 기관(CA)이 발급
** 인증서가 포함하고 있는 정보
- 서버 도메인 이름
- 서버의 공개 키
- 인증서 발급자 정보
- 유효 기간
- 인증서 서명
3.1 인증서 종류
도메인 인증(DV, Domain Validation)
도메인 소유권만 검증합니다. 가장 간단하고 저렴한 인증서입니다.
기관 인증(OV, Organization Validation)
도메인 소유권과 조직 정보를 검증합니다. 보다 신뢰성이 높습니다.
확장 인증(EV, Extended Validation)
가장 높은 수준의 신뢰성을 제공합니다. 주소창에 초록색 자물쇠 또는 회사 이름이 표시됩니다.
4. SSL/TLS의 암호화 방식
대칭 암호화
클라이언트와 서버가 동일한 키를 사용해 데이터를 암호화하고 복호화 → 속도가 빠름
비대칭 암호화
공개 키와 개인 키를 사용하여 데이터를 암호화 → 주로 세션 키 교환에 사용됨
해싱(Hashing)
메시지 다이제스트를 생성해 데이터의 무결성을 확인 → MD5, SHA256 등이 사용됨
5. SSL의 발전과 TLS
SSL은 버전 3.0 이후 TLS로 발전
현재 SSL 3.0은 보안 취약점(예: POODLE 공격) 때문에 사용이 권장되지 않으며, 대부분 TLS 1.2 또는 TLS 1.3이 사용됨
** TLS와 SSL의 차이점
항목 | SSL | TLS |
---|---|---|
보안 수준 | 낮음 (현재는 사용 금지) | 높음 (최신 보안 알고리즘 포함) |
암호화 알고리즘 | 제한적 (구식 알고리즘 포함) | 최신 알고리즘 지원 (AES, ECDHE 등) |
핸드쉐이크 | 메시지 인증 없음 | 메시지 인증 코드(MAC) 사용으로 무결성 강화 |
키 교환 | RSA만 지원 | RSA, Diffie-Hellman, ECDHE 등 지원 |
세션 재개 | 제한적 | 세션 재개를 위한 세션 ID 및 세션 티켓 지원 |
취약점 | POODLE, BEAST 등의 공격에 취약 | 취약점 개선 (TLS 1.3은 프로토콜 단순화) |
속도 | 느림 (오래된 핸드쉐이크 방식) | TLS 1.3에서 더 빠른 핸드쉐이크 제공 |
현재 상태 | 더 이상 사용되지 않음 (폐기됨) | 표준화된 보안 프로토콜 (활성 사용 중) |
'💽 CS Knowledge > 🌐 Network' 카테고리의 다른 글
[혼자 공부하는 네트워크] Day 4 / 내가 만든 쿠키 (0) | 2024.12.23 |
---|---|
[혼자 공부하는 네트워크] Day 3 / 포트 포워딩 & DMZ (0) | 2024.12.23 |
[혼자 공부하는 네트워크] Day 2 / 게이트 웨이 (0) | 2024.12.23 |
[혼자 공부하는 네트워크] Day 1 / LAN과 서브넷 마스크 (0) | 2024.12.23 |