2009-04-28 4 views
1

우리는 애플리케이션에 자동 소프트웨어 업데이트를 추가하려고하지만 회사는 아직 신뢰할 수있는 루트 CA에서 코드 서명 인증서를 구매할 준비가되어 있지 않으므로 자체 서명 된 인증서를 사용하여 코드 업데이트에 서명합니다 .exe 및 .dll).자체 서명 인증서로 서명 된 바이너리를 확인하는 방법은 무엇입니까?

질문 : Microsoft의 암호화 API를 사용하여 인증서를 설치하지 않고 자체 서명 된 인증서로 서명 한 바이너리를 확인하는 방법은 무엇입니까? 검사 할 .cer 파일은 응용 프로그램과 번들로 제공됩니다. 또는 일반 Crypto 라이브러리를 사용하는 것이 더 간단합니까?

답변

3
당신은 당신이 당신의 자신의 인증서를 사용하는 거라면 결국 당신이 정말로 필요하지 않은 전체 X509의 일을 건너 뛸 수 있습니다

...

당신이 원하는 것을 들어

, 먼저해야 RSA 개인/공개 키 쌍을 생성하십시오. 그런 다음 공개 키를 응용 프로그램에 저장합니다.

업데이트가있을 때 사이트에서 MD5 또는 SHA-1 또는 사용하려는 모든 해시를 가져 와서 서명합니다. 그런 다음 개인 키로 해시를 암호화합니다. 설치된 응용 프로그램은 업데이트와 서명 (암호화 된 해시)을 가져옵니다. 응용 프로그램에서 이진 파일을 가져 오면 해시를 계산 한 다음 공개 키를 사용하여 해시를 해독하고 비교합니다. 그것들이 동일하다면 그것은 유효한 업데이트입니다. 그렇지 않으면 당신은 그것을 거부하고 사용자에게 경고합니다.

자체 서명 된 X509 인증서의 경우 메커니즘은 정확히 같지만 공개 키에는 인증서의 ID와 동일한 발급자 신원과 같은 추가 데이터가 있습니다.

0

필자는 몇 년 전에 Win2k 시대에 자체 서명 된 인증서를 사용할 수있는 방법을 생각해 냈지만 매우 해킹되어 공공 배포에는 적합하지 않으며 아마도 "수정"되었을 것입니다. 다른 암호 라이브러리를 사용하거나 자신의 암호 라이브러리를 개발할 생각이라면 좋은 암호를 잘못된 암호와 구별하는 것은 매우 어렵습니다.