인터로퍼가 기존 항목에 대해 가짜 CTL(인증서 신뢰 목록)을 대체하는 것을 더 어렵게 만들려면 CTL을 사용할 때마다 CTL에서 서명을 확인합니다. 신뢰할 수 있는 서명이 없는 CTL은 사용하지 마세요.
CTL 서명 확인하려면
- 원하는 CTL을 포함하는 인증서 저장소 엽니다.
- CTL의 CTL_CONTEXT에 대한 핸들을 가져옵니다. 이 작업은 CTL_CONTEXT핸들을 반환하는 함수(예: CertFindCTLInStore)를 호출하여 수행할 수 있습니다.
- CryptMsgGetAndVerifySigner을 호출하여, 2단계에서 검색된 CTL_CONTEXT 을 hCryptMsg 매개 변수로 전달합니다. 또한, 신뢰할 수 있는 원본의 인증서가 포함된 인증서 저장소의 핸들을 rghSignerStore 매개 변수로 전달하고, dwFlags 매개 변수로 CMSG_TRUSTED_SIGNER_FLAG 을 설정합니다. 함수가 TRUE 반환하면 서명이 확인되고 CTL 서명자의 PCCERT_CONTEXT 대한 포인터가 ppSigner 매개 변수에 반환됩니다.