강력한 이름 키 (snk 파일)가 제공됩니다. 이 파일을 오픈 소스 프로젝트의 소스 컨트롤에 추가 할 때 보안 문제가 있습니까?오픈 소스 프로젝트의 소스 컨트롤에 강력한 이름 키를 추가 할 때 발생하는 보안 문제가 있습니까?
답변
단순한 대답은 예이며 아니오입니다. 처음에 강력한 이름으로 서명하는 목적에 따라 달라집니다.
Strong-Name Signing의 MSDN 페이지는 두 가지 목적을 상당히 잘 요약합니다.
강한 이름 지정은 응용 프로그램이나 구성 요소에 다른 소프트웨어가 명시 적으로 참조 할 수있는 고유 한 ID를 제공합니다. 예를 들어 강력한 이름 지정을 사용하면 응용 프로그램 작성자와 관리자가 에 공유 구성 요소에 사용되는 정확한 서비스 버전을 지정할 수 있습니다. 이렇게하면 다른 응용 프로그램이 다른 응용 프로그램에 영향을주지 않고 다른 버전 을 지정할 수 있습니다. 또한 구성 요소의 강력한 이름을 보안 증거로 사용하여 두 구성 요소 간의 트러스트 관계를 설정할 수 있습니다.
모든 공개 배포 라이브러리 (DLL)는 최종 사용자가 사용하려고하는 한 강력한 이름으로 서명해야합니다. (예 : 구현 세부 사항이 아니면)
본인이 서명 한 주요 목적은 고유 한 식별 (네임 스페이스가 실수로 충돌 할 수 있음) 및 어셈블리를 사용할 수 있도록하는 등의 기술적 인 이유가있는 경향이 있습니다. GAC. 이 경우 키 파일을 공개적으로 사용 가능하게하는 것은 처음부터 아무 것도 의도되지 않았기 때문에 보안에 영향을 미치지 않습니다. 신뢰/출처의 보증은 제공되지 않지만 고유 식별은 여전히 유효합니다. MSDN 페이지에서 주로이 시나리오에 대해 설명합니다. 당신이 집회에 서명해야 할 때와하지 말아야 할 때; 및 주변 세부 사항.
그러나 인증을 위해 어셈블리에 서명하는 경우 - 특히 어셈블리에 주장 된 소스에서 어셈블리가 온다는 보장을 제공하려는 경우 - 발급 된 (공개적으로 배포 된) 키가 완전히 무효화됩니다 이 신뢰 모델. 즉, 누구나 프로젝트 코드를 임의로 수정할 수 있으며 본질적으로 신원을 위조하여 어셈블리를 올바르게 다시 작성하고 사임 할 수 있습니다. MSDN 페이지는 유감스럽게도 (아마도 보안 전략의 일부로 더 많이 고려되어야하기 때문에)이 사용법을 잘 설명하지 못하고 있지만 그럼에도 불구하고 중요합니다.
마지막으로 어셈블리에 서명하는 데 CLR/.NET에서 사용하는 키 인증서 파일에는 두 가지 유형이 있다는 점에 유의하십시오. 첫 번째는 SNK입니다. 이것은 암호로 보호되지 않습니다. 두 번째는 실제로 SNK 키 파일의 암호로 보호 된 버전 인 PFX입니다. 이 암호가 충분히 안전하다면, 오픈 소스 소프트웨어와 함께 보안 PFX를 배포 할 때 보안 문제가 없습니다.. Visual Studio (및 명령 줄 키 생성 유틸리티)는 물론 둘 다를 생성 할 수 있습니다.
또한이 답변을보고 PFX 키 파일을 적절하게 추정 할 수 있습니다. –
Noldorin
그리고'sn.exe'는 명령 줄에서 실행 중일 때 원하는 강력한 이름 생성/조작 유틸리티입니다. 그것은 공정한 몇 가지 기능을 제공하며 그 중 대부분은 결코 필요하지 않을 것입니다. http://msdn.microsoft.com/en-us/library/k5b5tt23%28v=vs.100%29.aspx – Noldorin