TLS(SSL) 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
;Transport Layer Security (Secure Sockets Layer)
;브라우저-서버 구간 암호화를 지원하는 보안 프로토콜
브라우저-서버 구간 암호화를 지원하는 보안 프로토콜


== SSL과 TLS ==
== SSL과 TLS ==
* Netscape에서 처음 개발할 때 이름이 SSL이었다. 이때부터 사실상 표준처럼 많이 쓰였다.
* Netscape에서 처음 개발할 때 이름이 SSL이었다. 이 때부터 사실상 표준 처럼 많이 쓰였다.
* [[SSL/TLS|IETF에서 SSLv3을 기반으로 표준화를 진행하면서 TLS로 명칭이 변경되었다.]]
* IETF에서 SSLv3을 기반으로 표준화를 진행하면서 TLS로 명칭이 변경되었다.
: (모 기업의 상용 제품과 이름이 겹쳐서 혼동을 피하고자 했다.)
: (모 기업의 상용 제품과 이름이 겹쳐서 혼동을 피하고자 했다.)
* 즉 SSLv3 ≒ TLS
* 즉 SSLv3 ≒ TLS
21번째 줄: 20번째 줄:
* 무결성을 위한 MAC을 생성한다.
* 무결성을 위한 MAC을 생성한다.
* 아래 3개의 프로토콜 하위에 위치하며 실질적인 보안을 수행한다.
* 아래 3개의 프로토콜 하위에 위치하며 실질적인 보안을 수행한다.
* '''동작 순서'''
** 단편화 → 압축 → MAC추가 → 암호화
=== Handshake 프로토콜 ===
=== Handshake 프로토콜 ===
; 세션에 대한 세션정보와 연결 정보를 공유하기 위한 프로토콜
* 세션에 대한 세션정보와 연결 정보를 공유하기 위한 프로토콜
* 초기 연결 시 세션 형성을 관장한다.
* 초기 연결 시 세션 형성을 관장한다.
* '''동작순서'''
* '''동작순서'''
{| class="wikitable"
*# 초기 협상 단계 : 프로토콜 버전, 암호화 방식 등 보안 파라미터를 협상한다.
! 원칙
*# 서버 인증 단계
! 설명
*# 클라이언트 인증 단계
! 방향
*# 종료 단계 : 협상된 보안 알고리즘에 따라 메시지 교환을 시작한다.
|-
| Client Hello
| 클라이언트 SSL 버전, 클라이언트 생성 난수, 세션 식별자, Cipher Suit 리스트
| 클라이언트 ▶ 서버
|-
| Server Hello
| 서버의 SSL 버전,서버 생성 난수, 세션 식별자, 클라이언트의 Cipher Suit 중 선택
| 서버 ▶ 클라이언트
|-
| Server Certificate
| 서버 인증서, 공개키
| 서버 ▶ 클라이언트
|-
| Certificate Request
| 서버에서 클라이언트 인증서 요청(생략 가능)
| 서버 ▶ 클라이언트
|-
| Server Hello Done
| 서버에서 필요한 내용을 모두 전송했음을 알림
| 서버 ▶ 클라이언트
|-
| Client Certificate
| 서버에서 클라이언트 인증서를 요청한 경우 인증서 송신(생략 가능)
| 클라이언트 ▶ 서버
|-
| Client Key Exchange
| 세션키 생성용 pre_master_secret 을 서버 공개키로 암호화하여 전송
| 클라이언트 ▶ 서버
|-
| Certificate Verify
| 클라이언트 인증서를 확인할 수 있도록 전자서명 발송, 서버에서 검증
| 클라이언트 ▶ 서버
|-
| Client Finish
| 서버에 Change Cipher Spec을 전송하고 Finished 알림
| 클라이언트 ▶ 서버
|-
| Server Finish
| 클라이언트에 Change Cipher Spec 전송하고 Finished 알림
| 서버 ▶ 클라이언트
|}
* '''Cipher Suite'''
** 서버와 클라이언트가 어떤 암호화 방식을 사용할지 정하기 위해 교환하는 문자열 값
** 형식: SSL/TLS_(키 교환 알고리즘)_(인증 알고리즘)_WITH_(대칭키 알고리즘)_(블록 암호 운용 방식)_(해시 알고리즘)
** 예시) TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* '''단축된 핸드셰이크(Abbreviated Handshake)'''
** 한동안 통신을 하지 않다가 다시 통신할 때(Session Resumption) 사용되는 프로토콜
** [https://tools.ietf.org/html/rfc5077 RFC5077]
{| class="wikitable"
! 원칙
! 설명
! 방향
|-
| Client Hello
| 클라이언트 SSL 버전, 클라이언트 생성 난수, 세션 식별자, Cipher Suit 리스트
| 클라이언트 ▶ 서버
|-
| Server Hello
| 서버의 SSL 버전,서버 생성 난수, 세션 식별자, 클라이언트의 Cipher Suit 중 선택
| 서버 ▶ 클라이언트
|-
| Server Finish
| 클라이언트에 Change Cipher Spec 전송하고 Finished 알림
| 서버 ▶ 클라이언트
|-
| Client Finish
| 서버에 Change Cipher Spec을 전송하고 Finished 알림
| 클라이언트 ▶ 서버
|}
 
=== Change Cipher Spec 프로토콜 ===
=== Change Cipher Spec 프로토콜 ===
* 서버와 클라이언트 상호간의 Cipher Spec 확인을 위해 메시지를 교환하는데 사용된다.
* 서버와 클라이언트 상호 간의 cipher spec 확인을 위해 메시지를 교환하는데 사용된다.
=== Alert 프로토콜 ===
=== Alert 프로토콜 ===
* 메시지의 암호화 오류, 인증서 오류 등을 전달한다.
* 메시지의 암호화 오류, 인증서 오류 등을 전달한다.
109번째 줄: 35번째 줄:
== 인증서의 종류 ==
== 인증서의 종류 ==
=== 보증 범위에 따른 구분 ===
=== 보증 범위에 따른 구분 ===
* Wild Card 인증서: 서브도메인의 개수와 상관없이 모든 서브도메인을 다 보증한다. 가격이 훨씬 비싸다.
* Wild Card 인증서 : 서브도메인의 개수와 상관없이 모든 서브도메인을 다 보증한다. 가격이 훨씬 비싸다.
* 일반 인증서: 특정 한 도메인에 대해서만 보증하며,서브도메인도 하나의 도메인으로 간주한다.
* 일반 인증서 : 특정 한 도메인에 대해서만 보증하며,서브도메인도 하나의 도메인으로 간주한다.


=== 보증 강도에 따른 종류 ===
=== 보증 강도에 따른 종류 ===
* DV(Domain Validation): 실제 도메인의 소유주인지만 확인한다.
* DV(Domain Validation) : 실제 도메인의 소유주인지만 확인한다.
* OV(Organization Validation): 신청 시 업체로부터 담당자(신청자)의 정보와 사용자 등록을 받음으로써 기업의 실체가 인증된다.
* OV(Organization Validation) : 신청시 업체로부터 담당자(신청자)의 정보와 사용자 등록을 받음으로써 기업의 실체가 인증된다.
* EV(Extended Validation): 업체의 사업자등록증과 기업 신용정보 등 기업의 신뢰도까지 검증하여 피싱, 파밍을 방지할 수 있다.
* EV(Extended Validation) : 업체의 사업자등록증과 기업 신용정보 등 기업의 신뢰도까지 검증하여 피싱, 파밍을 방지할 수 있다.


[[분류:네트워크]]
[[분류:네트워크]]
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)