Chain of Trust and Certificate Authorities


인증은 모든 TLS 연결을 수립하는데 필수적인 부분이다. 무엇보다도 상호간에 암호화된 통로를 통해 통신이 가능하다. 상호간의 신원확인을 위한 방법을 이해하기 위해서 Alice 와 Bob 사이의 인증과정을 간단히 살펴보자.

  • Bob, Alice는 각자 자신의 공개키와 비밀키를 생성한다.
  • 둘 다 각자의 비밀키를 감춘다.
  • Alice 는 Bob에게 자신의 공개키를 공유한다. 이와같이 Bob은 Alice 에게 자신의 공개키를 공유한다.
  • Alice는 Bob을 위한 새로운 메시지를 생성하고 비밀키로 암호화한다.
  • Bob은 Alice의 공개키를 사용해 제공된 메시지 서명을 검증한다.

인증은 앞서 교환된 키요소이다. 특히 공개키 암호화는 Sender의 공개키를 사용하여 올바른 비밀키로 서명된 메시지의 유효성을 검증할수 있다. 위의 과정에서 처럼 Alice 와 Bob은 공개키를 교환한다. 다음에 Alice는 Bob의 친구라고 하는 Charlie로 부터 처음으로 메시지를 받는다. 사실 Charlie가 Bob의 친구라는 것을 증명하기 위해서는 Charlie의 공개키를 Bob의 암호화 키로 서명해달라고 요청하고 서명된 메시지를 서명에 포함시켜야 한다. 이런 경우 Alice는 먼저 Charlie의 키에 포함된 Bob의 서명을 확인한다. Alice는 Bob의 공개키를 알고 Chalie의 키에 서명된 것이 진짜인지 검증할 수 있다. 그러나 Alice가 Bob이 Chalie를 검증했다는 사실을 신뢰한다면 Chrlie의 메시지를 신뢰하여 확인한다.

우리가 방금 완료한 것은 신뢰의 체인이다. Alice는 Bob을 신뢰하고 Bob은 Charlie를 신뢰한다. 이로인해 Alice는 Charlie를 신뢰한다. 이 구조는 신뢰하는 구성의 목록을 만들거나 중가시킬 수 있다.

브라우저를 통한 웹에서의 인증은 정확히 위와 같은 과정을 통해 수행된다. 브라우저가 신뢰하는 대상이 누구인지 반드시 확인해야하고 브라우저를 사용할 때 신뢰하는 대상이 누구인지에 대해 질문해야 한다. 이와 관련해서는 적어도 3개의 질문이 있다.

Manually specified certificates

모든 브라우저와 운영체제는 당신이 신뢰하는 어떤 인증서이든 import를 위한 방법을 제공한다. 어떻게 자격증명을 얻는지와 무결성을 검증하는 방법을 제공한다.

Certificate authorities

인증기관(CA)는 신뢰되는 third party이다. CA는 인증서의 소유자와 인증서를 인증서에 의존하는 그룹 모두에게 검증이 되어있다.

The browser and th operating system

모든 운영체재와 대부분의 브라우저들은 잘알려진 인증기관의 목록을 전달한다. 인증된 그룹의 목록을 제공하고 유지하기 위한 소프트웨어의 밴더들이 필요하다.

실제로 모든 웹사이트의 모든 키를 갖고 있는것과 각각을 검증하는 것은 비현실적이다. 이를 보완하기 위한 해결책으로 아래의 그림과 같이 대부분 CA를 사용한다. 브라우저는 rootCA를 인증하기 위한 CA가 어떤 것인지 명시하고 CA에 의해 서명된 각각의 사이트를 검증한다. 그리고 이 인증서가 잘못 사용되는 것은 아닌지 등을 검사한다. 만약 CA의 인증서를 갖는 어떤 사이트의 보안이 침해된 경우, CA는 이전에 발급된 인증서를 폐지할 책임이 있다.

모든 브라우저는 보안 연결의 인증체인을 살펴볼수 있도록 하고 있다. URL 옆의 자물쇠 아이콘을 클릭하면 된다.

results matching ""

    No results matching ""