호우동의 개발일지

Today :

article thumbnail

SSL

  • 방대한 인터넷 상거래의 안전을 위해 사용되는 프로토콜
    • 고객이 인터넷 서점에서 책을 구입하는 경우
      • 신용카드를 제공하기 전 자신이 거래하고 있는 사이트가 진짜 그 사이트인지 확인
        → 고객은 그 사이트를 인증
      • But, 인터넷 서점(사이트) 쪽에서는 고객의 신원을 알 필요가 없다.
      • 상호인증은 필요 없다.

  • 보편적으로 웹브라우징 세션에서 많이 사용

 


SSL 프로토콜 관련 용어

  • S = “마스터 이전 비밀”(Pre-master Secret)
  • K =(h(S, R_A, R_B)
  • msgs = “모든 이전의 메시지”를 의미
  • CLNT = 문자열
  • SRVR = 문자열

 


SSL 프로토콜

  • 너무 단순한 유사 SSL 프로토콜

    • 과정
      1. 앨리스는 서버인 밥에게 안전한 거래를 원한다고 알림
      2. 밥은 자신의 인증서로 응답
      3. 인증서의 서명을 확인하여 인증서가 밥의 것임을 확신
        → 밥의 공개키로 밥의 대칭키 K_{AB}를 암호화해 밥에게 전송
      4. 이 대칭키는 그 이후 데이터 송수신과정에서 암호화 및 무결성 제공

    • 취약점
      • 밥은 외부적으로 인증 X
      • 암호화된 데이터가 정확하게 복호화될 경우 ← 앨리스가 밥과 통신하고 있음을 아는 유일한 방법

  • 단순화된 SSL
    SSL
    • 과정
      1. 앨리스는 밥에게 SSL 접속하고자 하는 의도와 함께
        (nonce R_A+ 현재 자신이 가지고 있는 암호목록)을 전송한다.
      2. 밥은 자신의 인증서로 응답하면서 받았던 암호목록 중 하나를 선택해 nonce R_B와 함께 전송
      3. 앨리스는 키 K로 암호화된 해시와 함께 자신이 만들었던 S를 보낸다.
        이 해시 안에는 이전에 보냈던 모든 메시지를 포함한 msgs와 단순 문자열인 CLNT이 포함
        → 해당 해시는 메시지가 정확히 수신되었는지를 확인하기 위해 사용

      4. 밥은 유사한 해시로 구성된 메시지로 앨리스에게 응답
        • 이 순간 앨리스는 밥이 메시지를 정확하게 수신하였는지 확인했음
        • 또한 앨리스가 밥을 인증할 수 있게 됨 ← 밥만이 S를 복호화해 키 K를 생성 가능

      5. 앨리스는 밥을 인증하였고 통신에서 암호화와 무결성을 위해 이용할 수 있는 대칭키 K를 공유

  • 특징
    • 앨리스는 서버인 밥을 인증하지만 밥은 앨리스를 인증하지 않는다. → 상호인증 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, 대신 응용프로그램의 변화