5

JSON.NET과 같은 다양한 타사 라이브러리를 사용하여 응용 프로그램을 만들었습니다.JSON.NET과 같은 써드 파티 DLL에 디지털 서명해야합니까?

내 응용 프로그램을 구성하는 모든 DLL이 제 3의 DLL을 포함하여 디지털 서명되어 있는지 확인하고 싶습니다. 이것들이 저자에 의해 서명되지 않았다는 것을 감안할 때, 제 3 자의 것들에 서명 할 수 있습니까?

답변

2

강력한 이름 지정 또는 authenticode 서명에 대해 이야기하고 있습니까? 후자의 문제는 authenticode 서명 된 어셈블리가로드되고 .NET이 인증서의 유효성을 검사하고 일부 구성 (예 : OCSP를 검사해야하고 연결할 수없는 경우)에 수십 초가 걸릴 수 있습니다. 우리는 Authenticode와 X.509 인증서로 어셈블리를 서명하는 것을 중단해야했습니다.

서명 된 어셈블리가 어떤 방식 으로든 악성 코드에 의해 사용되는 경우 안티 바이러스 회사의 유능한 전문가가 아닌 사람이 (a) 어셈블리를 악성 코드로 표시하고 (b) 악화되는 경우 불평 할 수 있습니다 코드 서명 인증서를 발급 한 인증 기관에 연결하면 인증서가 취소됩니다.

.NET의 강력한 이름 지정 (인증서가없는 키 쌍을 사용)은 개인 비즈니스에 다소 차이가 있습니다.

업데이트 : Authenticode는 일반적으로 PE 형식 파일 (EXE 및 DLL), SYS 및 CAB에 적용됩니다. 강력한 이름 지정은 순수한 .NET 기술입니다.

경고 메시지는 Authenticode 서명에 대해 설명합니다. 설치 프로그램에 서명하는 것이 필수적이며, 서명 된 응용 프로그램 만 실행하도록 시스템 정책을 설정하지 않으면 메시지를 제거하기에 충분합니다 (이 경우 응용 프로그램의 EXE에도 서명해야합니다).

+0

@EugeneMayevskiEldoS : 감사. 음, 확실하지 않습니다. 차이는 제가 알고 있었던 것이 아닙니다. 내가하려고하는 모든 것은 "이 응용 프로그램이 서명되지 않았습니다"라는 경고없이 응용 프로그램을 설치/실행하도록하는 것입니다. –

+0

어쩌면 DLL 자체가 아닌 설치 프로그램에 서명해야할까요? –

+0

질문에 대한 답변을 추가했습니다. –

5

인터넷에서 같은 질문에 대한 답변을 찾기 위해 (실패한) 시도했습니다.

Google과 Adobe가 제품을 어떻게 제공했는지 확인한 결과 타사 제품을 포함하여 폴더의 모든 바이너리가 서명 된 것으로 나타났습니다.

몇 가지 예 : 1. Google 크롬에는 Adobe가 저작권을 보유하고 있지만 Google Inc.에서 디지털 서명 한 pepflashplayer.dll이 포함되어 있습니다. 2. Adobe Reader에는 IBM이 저작권을 갖고 있지만 "Adobe Systems"가 디지털 서명 한 icudt40.dll이 포함되어 있습니다.

따라서 가장 좋은 방법은 응용 프로그램을 구성하는 모든 바이너리에 서명하는 것입니다 - 파티 용 것들. 고객의 컴퓨터에서 발생하는 조작을 피하거나 적어도 쉽게 감지 할 수 있으므로 도움이됩니다.