[노트] XIGNCODE 디지털 서명에 관한 오해

커널 모드 드라이버 개발을 하는데에 디지털 서명은 필수적입니다. 왜냐하면 64비트 운영체제 부터는 합법적으로 서명이 되지 않은 드라이버는 동작하지 않기 때문입니다. 즉, 아무리 잘 만들어 놓은들 디지털 서명을 받지 않았다면 컴퓨터에서 로드해서 사용할 수 없다는 이야기입니다. 그러니 응당 디지털 서명은 기본 중의 기본이겠지요. 저희가 제공하는 파일 중에 사용자가 접할 수 있는 모든 파일은 VeriSign 인증서를 통해서 서명이 된 후에 배포됩니다. 그러니 적합하지 않은 형태로 디지털 서명이 되어 있다거나 디지털 서명이 되어 있지 않다거나 하는 이야기는 사실이 아닙니다.

cert1
Figure 1. xhunter1.sys 파일의 등록 정보

 

cert2
Figure 2. xhunter1.sys 디지털 서명 정보

 

cert3
Figure 3. xhunter1.sys 디지털 서명 인증 경로

더욱이 64비트 윈도우 부터는 오브젝트 필터링 콜백이라는 것을 사용하기 위해서는 마이크로소프트에 용도를 통보한 후에 고도를 할당 받아서 사용해야 합니다. 이것은 상기 디지털 서명처럼 반드시 해야 하는 일은 아니지만 정상적인 업체라면 해야 하는 그런 일 입니다. 당연히 저희 또한 마이크로소프트 측에 드라이버의 용도에 관한 통보를 했고 해당 고도를 할당 받아서 사용하고 있습니다. 이는 마이크로소프트 홈페이지를 참고하시면 아래와 같이 정보가 노출되는 것을 알 수 있습니다.

altitude
Figure 4. xhunter1.sys 오브젝트 필터링 콜백 고도

추가로 인증서 유효 기간에 대해서 말씀 드리면 인증서의 동작 방식은 인증서가 유효한 기간 내에 서명이 된 것인지를 체크하는 구조입니다. 따라서 아래 파일을 보면 인증서가 2014.1.23부터 2016.3.24까지 유효한데 파일은 2015.6.4에 인증되었다는 것을 나타냅니다. 이 파일의 경우 인증서 유효 기간이 지난 후에도 정합성을 인정 받는 파일입니다. 따라서 드라이버 코드가 변경되지 않는 이상 인증서 때문에 새로운 파일을 배포 하거나 할 필요는 없습니다. 더 자세한 내용이 궁금하신 분들은 마이크로소프트 설명 페이지를 참고하시면 됩니다.

cert4
Figure 5. xhunter1.sys 디지털 서명 인증서 유효기간

그리고 더 많은 기술적인 설명이 필요한 내용인데 드라이버를 정상적인 방식으로 로드하기 위해서는 반드시 레지스트리에 그 값을 기록해야 합니다. 그래야 윈도우에서 그 정보를 알고 드라이버를 로드해 주기 때문입니다. 더 자세한 내용을 설명하기 위해서는 너무 많은 기술적인 내용을 설명해야 하기에 이쯤에서 줄이도록 하겠습니다.

그러니 더 이상 디지털 서명이 잘못된 파일이라던지 드라이버가 잘못된 형태로 운용되고 있다는 오해는 가지지 않았으면 하는 바램입니다.