아래 글에서 이어지는 내용입니다.
2021/01/05 - [Security] - 업데이트 배포서버가 해킹된다면? - 1편
업데이트 배포서버가 해킹된다면? - 1편
개요 우리는, 여러 프로그램을 자동으로 업데이트되게 설정해놓고 사용하고 있다. 이런 프로그램은 기본적으로, 우리가 컴퓨터를 키면, 업데이트를 확인하며, 업데이트가 있으면 자동으로 서버
robinjoon98.tistory.com
위 글에서, 해커가 개인이 직접 공개키, 비밀키를 만들어 코드사인을 한 경우, 변조 탐지과정을 우회할 수 있었다. 당연히, 이를 막기 위한 장치가 존재한다. 바로, 공인인증서다.
공인인증서
공인 인증서에는 여러가지 정보가 포함되어있는데, 그중에서 가장 중요한 주체, 주체의 공개키, 발급자, 발급자의 서명이다. 주체란, 당연히 업데이트를 제공하는 개발사이다. 발급자는 이 인증서를 발급한 기관이다. 발급자의 서명은 인증서에 포함된 여러 정보들을 하나로 모아, 해시함수에 입력해 해시값을 얻어낸 후, 발급자의 비밀키로 암호화한 것을 말한다.
발급자는, 주체를 아주 철저하게 인증한다. A라는 회사가 발급자에게, 자신이 만들어낸 공개키와, 자신의 정보를 등록하면, 발급자가 이를 철저히 분석한다. 따라서, 제 3자가 A사를 사칭해 인증서를 발급받는 행위는 사실상 불가능 하다.
코드사인 - 인증서 활용

이제, 이 인증서를 활용해 변조여부를 확인해 보자. 이전 글에서 C 에 KeyD 대신, 인증서를 포함시켜 C2(B1,S, 인증서)를 만들어 이를 배포한다.
더 강화된 무결성 검증

업데이트 관리자는 이전과 마찬가지로 C1을 B1, S, 인증서를 분리하고, 인증서에 적힌 KeyD를 이용해 S를 복호화, H2를 얻고, B1을 해시 알고리즘을 통해 H1을 얻어 이 둘을 비교한다. 이 둘이 같으면, 추가검증 단계를 진행한다.

우선, 인증서에 적힌 주체를 확인한다. 주체가 올바르면, 이제 인증서에 적힌 발급자의 서명을, 인터넷에 공개되어있는 발급자의 공개키를 이용해 복호화한다. 이를 H3라 하자. 그 후, 인증서에 적힌 정보들을 합쳐 지정된 해시함수를 이용해 해시값을 구한다. 이를 H4라 하자.
H3와 H4를 비교해 같다면, 인증서가 변조되지 않았음을 의미하고, 따라서 안전한 업데이트파일이므로, 사용자의 PC에 업데이트를 설치한다.
인증서 체인
여기서 또하나의 의문이 생긴다. 발급자의 공개키는 어디서 얻는가? 주체의 공개키가 주체의 인증서에 있던 것 처럼 발급자의 공개키는 발급자의 인증서에 있다. 발급자의 인증서는 인터넷에서 가져오거나, 코드사인 시점에 같이 포함되기도 한다. 어쨋든, 이런 식이면, 결국 제일 상위의 인증서(Root 인증서)가 존재할 것이고, 이 인증서는 주체와 발급자가 같다. 따라서 기술적으로 이들을 믿을 수는 없다. 하지만, Root 인증서의 발급자를 보면 믿음이 갈 것이다. 국내의 대표적인 root인증서 발급기관에는 KISA(한국인터넷진흥원) 이 있다. 국가기관이다. 믿음이 갈 것이다. 이 외에도 Root 인증기관은 최상위 도메인을 관리하는 기관이라던지, 윈도우를 만든 마이크로소프트 등 애초에 믿지 않으면 안되는 기관들이다.
해커의 관점에서 생각해보자. 해커에게 남은 방법은 발급자마저 사칭하여 인증서를 만드는 방법인데, 이는 결국 Root인증서까지 만들어야 함을 의미한다. 만드는 것은 뭐 할 수 있겠지만, 만든 Root 인증서를 각 사용자의 PC에 집어 넣어야 한다. 이는 "다수의 PC의 해킹" 이라는 목적을 위해 "다수의 PC의 해킹" 이 전제되므로 의미가 없다.
'Security' 카테고리의 다른 글
| [Auth] 세션과 토큰 (0) | 2021.11.15 |
|---|---|
| 업데이트 배포서버가 해킹된다면? - 1편 (0) | 2021.01.05 |
| CSRF 실습 (0) | 2020.09.23 |
| XSS (0) | 2020.07.19 |