SSL
- 방대한 인터넷 상거래의 안전을 위해 사용되는 프로토콜
- 고객이 인터넷 서점에서 책을 구입하는 경우
- 신용카드를 제공하기 전 자신이 거래하고 있는 사이트가 진짜 그 사이트인지 확인
→ 고객은 그 사이트를 인증 - But, 인터넷 서점(사이트) 쪽에서는 고객의 신원을 알 필요가 없다.
- 상호인증은 필요 없다.
- 신용카드를 제공하기 전 자신이 거래하고 있는 사이트가 진짜 그 사이트인지 확인
- 고객이 인터넷 서점에서 책을 구입하는 경우
- 보편적으로 웹브라우징 세션에서 많이 사용
SSL 프로토콜 관련 용어
- S = “마스터 이전 비밀”(Pre-master Secret)
- K =(h(S, R_A, R_B)
- msgs = “모든 이전의 메시지”를 의미
- CLNT = 문자열
- SRVR = 문자열
SSL 프로토콜
- 너무 단순한 유사 SSL 프로토콜
- 과정
- 앨리스는 서버인 밥에게 안전한 거래를 원한다고 알림
- 밥은 자신의 인증서로 응답
- 인증서의 서명을 확인하여 인증서가 밥의 것임을 확신
→ 밥의 공개키로 밥의 대칭키 K_{AB}를 암호화해 밥에게 전송 - 이 대칭키는 그 이후 데이터 송수신과정에서 암호화 및 무결성 제공
- 취약점
- 밥은 외부적으로 인증 X
- 암호화된 데이터가 정확하게 복호화될 경우 ← 앨리스가 밥과 통신하고 있음을 아는 유일한 방법
- 과정
- 단순화된 SSL
- 과정
- 앨리스는 밥에게 SSL 접속하고자 하는 의도와 함께
(nonce R_A+ 현재 자신이 가지고 있는 암호목록)을 전송한다. - 밥은 자신의 인증서로 응답하면서 받았던 암호목록 중 하나를 선택해 nonce R_B와 함께 전송
- 앨리스는 키 K로 암호화된 해시와 함께 자신이 만들었던 S를 보낸다.
이 해시 안에는 이전에 보냈던 모든 메시지를 포함한 msgs와 단순 문자열인 CLNT이 포함
→ 해당 해시는 메시지가 정확히 수신되었는지를 확인하기 위해 사용 - 밥은 유사한 해시로 구성된 메시지로 앨리스에게 응답
- 이 순간 앨리스는 밥이 메시지를 정확하게 수신하였는지 확인했음
- 또한 앨리스가 밥을 인증할 수 있게 됨 ← 밥만이 S를 복호화해 키 K를 생성 가능
- 앨리스는 밥을 인증하였고 통신에서 암호화와 무결성을 위해 이용할 수 있는 대칭키 K를 공유
- 앨리스는 밥에게 SSL 접속하고자 하는 의도와 함께
- 과정
- 특징
- 앨리스는 서버인 밥을 인증하지만 밥은 앨리스를 인증하지 않는다. → 상호인증 X
- 송신 및 수신에 각각 다른 키를 사용하는 이유 → 재연 공격 방지
- K = h(S, R_A, R_B)로부터 얻어지는 것
- 암호화 키 2개, 송신용과 수신용 각 1개씩
- 무결성 키 2개, 송신용과 수신용 각 1개씩
- 초기화 벡터(IV) 2개, 송신용과 수신용 각 1개씩
SSL과 중간자 공격
- SSL은 중간자 공격에 안전하도록 설계
- 밥의 인증서는 인증서 진위를 확인해 주는 기관에 의해 서명되어야 함
- 트루디는 앨리스에게 밥의 인증서를 보낼 수 있지만, 그 이후 자신이 밥이라고 인증할 수 없음
- 트루디가 밥의 인증서 대신 자신의 인증서를 보내면
앨리스가 밥 인증서의 서명에 대한 진위를 확인할 때 공격을 실패함
- 트루디가 밥의 인증서 대신 자신의 인증서를 보내면
- 실제 사용 - 웹브라우징 세션
- 인증서의 서명이 유효하지 않은 경우
- 웹브라우저는 사용자에게 경고 메시지를 보냄
- 경고를 무시한 채 접속을 지속적으로 유지하는 것을 허용할 경우(경고 무시)
→ 중간자 공격은 성공할 것임
- 경고를 무시한 채 접속을 지속적으로 유지하는 것을 허용할 경우(경고 무시)
- 웹브라우저는 사용자에게 경고 메시지를 보냄
- 인증서의 서명이 유효하지 않은 경우
SSL 접속
- 세션 구현
- 공개키 연산이 요구되기 때문에 상대적으로 비쌈
- 새로운 HTTP 접속마다 새로운 SSL 세션이 요구된다면 성능상 문제 발생
- SSL 세션이 이미 존재할 경우 SSL 접속을 구현하는 것으로 세션 구현 문제를 해결
→ 값비싼 공개키 연산을 배제하고 새로운 접속에 사용되는 대칭키 공유
- SSL 접속 프로토콜
- 공개키 연산이 필요 없도록 대칭키 K를 사용
- 나머지 부분은 SSL 세션 생성 프로토콜과 유사
SSL 기타 특징
- 소켓 계층으로, 사용자 영역에 존재한다.
- 상대적으로 단순하고 잘 설계되어 있다.
- 사용자 영역이므로 OS에 변화 x, 대신 응용프로그램의 변화