2014-12-31 11 views
19

다음은 자체 서명 된 CA를 만든 다음 획득 한 인증서를 사용하여 실행 파일에 서명하는 훌륭한 대답입니다 (How do I create a self-signed certificate for code signing on Windows?).자체 서명 된 CA 루트 인증서를 컴퓨터 저장소로 가져 오는 경우 테스트 모드없이 64 비트 Windows에 자체 서명 된 드라이버를 설치할 수 있습니까?

나는 드라이버 서명이 어떻게 작동하는지에 대한 온라인 토론을 많이 읽었으며 대답은 테스트 모드가 활성화되지 않은 상태에서 서명되지 않거나 자체 서명 된 드라이버를로드 할 수 없다는 것을 거의 확실하게 보여줍니다. 그러나 대답 나는 링크와 로저 Lipscombe에 의해 특히 한 의견은 모순보기를 제공하는 것 : 당신이 드라이버에 서명이를 사용하려면

, 당신은 컴퓨터 저장소에 CA 인증서를 가져와야합니다. 내 예제에서는 사용자 저장소로 가져옵니다. 이는 대부분의 소프트웨어에서 테스트/내부 용도로 사용하기에 적합합니다.

내게는 CA 인증서를 컴퓨터 저장소로 가져온 한 자체 서명 된 인증서 (자체 서명 된 CA에서 발급 한)가있는 드라이버를 설치할 수있는 것처럼 보입니다. 부팅 메뉴에서 F8 키를 눌러 TESTSIGNING 또는 NOINTEGRITYCHECKS와 같은 부팅 구성 플래그를 사용하여 테스트 모드를 사용하지 않도록 설정하여 시스템을 변경하지 않아도됩니다.

맞습니까? 사람들이 적절한 디지털 서명이없는 드라이버 (예 : 오래된 프린터 드라이버 등)를로드해야 할 때이 방법을 더 널리 사용하지 못하게하는 데있어 장애물은 무엇입니까? 대신, 사람들은 테스트 모드로 부팅하거나 시스템 드라이버를 실행하기 위해 시스템 파일을 조작하는 타사 소프트웨어 (DSEO)에 의존합니다.

이 방법의 단점은 무엇입니까? 위의 SO 질문에 설명 된 프로세스는 관리자 권한이 필요하지만 드라이버를 설치하려면 어쨌든 필요합니다. 자체 서명 된 CA를 신뢰하는 것은 보안 위험 일 수 있지만 더 큰 보안 위험이있는 모든 서명 검사를 비활성화하지는 않습니까?

+2

좋은 질문을. MSDN [장치 드라이버 패키지 서명 단계] (http://technet.microsoft.com/en-us/library/dd919238%28vww.10%29.aspx)에는 자체 서명 드라이버를 설치할 수 있음을 명시하고 있습니다. 시간 스탬프가 찍혀있는 한. – hvd

+1

@hvd 링크를 제공해 주셔서 감사합니다. 하지만 "이 절에서 생성 및 사용되는 인증서는 32 비트 버전의 Windows에서 32 비트 드라이버에서만 사용할 수 있습니다"라고되어 있습니다. "64 비트 버전의 Windows 7 및 Windows Server 2008 R2에는 커널 모드 장치 드라이버에 대한 특별한 서명 요구 사항이 있습니다. 64 비트 버전의 Windows를 사용하는 경우 다음과 같은 내용의 링크가 제공됩니다. 서명을위한 자체 인증서를 만들 수는 없으며 대신 승인 된 CA (인증 기관)와 연계 된 소프트웨어 게시 인증서를 사용해야합니다. " 아마 그것은 가능하지 않습니까? – user130496

+3

64 비트에서 드라이버에 서명을해야하므로 자체 서명이 불가능합니다. – Luke

답변

-2

당신은 당신이 자체 서명 된 인증서를 생성하고 신뢰할 수있는 CA로 사용자 저장소 (또는 machien 저장)에 저장하는 경우, 그것은 당신을 위해 작동 ...하지만 염두에 두어야 할 것이다 올바른지 :

  1. 보안 부팅이 작동하지 않습니다.
  2. 이것은 보안 침해입니다. 누군가 인증서를 획득하면 시스템에서 커널 모드 코드를 실행해야합니다.

다른 옵션은, 아니,이 Windows Vista 및 Windows Server에서 시작, 불행히도 수 없습니다 GoDaddy :

18

에서 서명 인증서를 신뢰할 수있는 코드를 구입하는 것입니다 드라이버가 있어야한다 2008 년

교차 서명. 새로 만든 CA가 Windows 트러스트 체인에 의해 트러스트되지 않기 때문에 자신의 CA를 만들고이를 컴퓨터 저장소에 추가하는 것으로는 충분하지 않습니다.

Driver Signing Requirements for Windows

Windows Vista 및 Windows Server 2008에서

이 새로운 기능은 코드 서명 기술을 활용, 운영 체제의 보안에 대한 새로운 요구 사항이 코드의 일부 종류의 디지털 서명의 사용을 적용합니다.

구성 요소 은이 사이트의 백서에 설명 된대로 Windows가 "신뢰하는"인증서로 서명해야합니다.

드라이버가 커널 메모리에로드

는, 윈도우 비스타가를 확인 : 언급 된 백서의

하나는로드 프로세스를 설명하고 각자 서명이 충분하지 않을 이유를 설명 Digital Signatures for Kernel Modules on Windows 입니다 드라이버 이미지 파일의 디지털 서명. 드라이버 유형에 따라 카탈로그 파일의 서명 된 해시 값 또는 이미지 파일 자체의 포함 된 서명이 될 수 있습니다. 커널 드라이버 패키지에 서명 할 때 사용되는 교차 인증서는로드 타임 서명 확인에 사용됩니다. 경로의 각 인증서는 커널의 신뢰할 수있는 루트에서 검사됩니다. 로드 타임 서명 확인에 신뢰할 수있는 루트 인증 기관 인증서 저장소에 대한 액세스 권한이 없습니다. 대신 Windows Vista 커널에 내장 된 루트 권한에 의존해야합니다. 앞서 언급 한 바와 같이

,이 또한 Requirements for Device Driver Signing and Staging 페이지에 설명되어 있습니다 : Windows 7 및 Windows Server 2008 R2의

64 비트 버전의 커널 모드 장치 드라이버에 대한 특별한 서명 요구 사항이 있습니다. 64 비트 버전의 Windows를 사용하는 경우 서명을위한 자체 인증서를 만들 수 없습니다. 대신 승인 된 CA (인증 기관)와 연계 된 소프트웨어 게시 인증서를 사용해야합니다. 커널 모드 드라이버 서명에 대한

유효한 CA는 다음 페이지에서 볼 수 있습니다

Cross-Certificates for Kernel Mode Code Signing

+0

실제로 작동합니다. libusb-win32를 확인하십시오, 그들은 정확하게 그 자체로 서명 된 드라이버가 문제없이 작동합니다 ... – Gusman