답변:
.snk 파일은 .NET 어셈블리에 강력한 이름을 적용하는 데 사용됩니다 . 그런 강력한 이름은
간단한 텍스트 이름, 버전 번호 및 문화권 정보 (제공된 경우) 및 공개 키 및 디지털 서명.
SNK에는 고유 한 키 쌍 (개인 및 공개 키)이 포함되어 있으며 이는 어셈블리의 고유 한 강력한 이름을 갖도록하는 데 사용할 수 있습니다. 어셈블리의 이름이 강력한 경우 어셈블리의 내용에서 "해시"가 구성되고 해시는 개인 키로 암호화됩니다. 그런 다음이 서명 된 해시는 .snk의 공개 키와 함께 어셈블리에 배치됩니다.
사람의 요구 어셈블리 강력한 이름의 무결성을 검증 할 때 나중에, 그들은 어셈블리의 내용의 해시를 구축하고, 어셈블리와 함께 해시 해독하기 위해 어셈블리에서 공개 키를 사용하여 - 두 해시가 일치하는 경우를, 조립 검증이 통과합니다.
이 방법으로 어셈블리를 확인하여 전체 응용 프로그램을 파괴 할 악의적 인 어셈블리로 교체하는 사람이 없도록하는 것이 중요합니다. 그렇기 때문에 이름이없는 어셈블리는 이름이 강한 어셈블리와 같은 방식으로 신뢰하지 않으므로 GAC에 배치 할 수 없습니다. 또한 신뢰 체인이 있습니다. 이름이 지정되지 않은 어셈블리를 참조하는 이름이 지정된 어셈블리를 생성 할 수 없습니다.
" 강한 명명의 비밀 "기사 . 이러한 개념을보다 자세하게 설명하는 데 탁월합니다. 사진과 함께.
.Net 세계에서 SNK 파일은 컴파일 된 바이너리에 서명하는 데 사용됩니다. 이를 통해 몇 가지 일이 발생할 수 있습니다.
BizTalk Server의 작동 방식에 익숙 하지 않으므로 해당 환경에서 어떤 특정 용도로 사용되는지 밝힐 수 없다고 생각합니다.
이것이 다소 도움이 되었기를 바랍니다.
.snk 파일은 어셈블리를 GAC (Global Assembly Cache)에 추가 할 수 있도록 어셈블리에 서명하는 데 사용됩니다.
.snk 파일에는 키에 대한 공개 및 개인 토큰이 포함되어 있습니다. 해당 키로 일부 데이터 (또는 이진)에 서명하려는 경우 데이터에서 체크섬이 계산 된 다음 개인 토큰으로 암호화됩니다. 그런 다음 암호화 된 체크섬이 데이터에 추가됩니다. 누구나 키에서 공개 토큰을 사용하여 체크섬을 해독하고 계산 된 체크섬과 비교하여 서명 된 데이터가 변조되지 않았 음을 확인할 수 있습니다.
공개 키 암호화에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Public-key_cryptography를 참조하십시오 .
.snk 파일은 프레임 워크 유틸리티 세트의 sn 유틸리티에 의해 생성 된 "키"의 지속적 버전입니다. 그런 다음이 파일을 사용하여 어셈블리에 '디지털 서명'합니다. 두 부분으로 된 키입니다. 개인-공개 키 조합입니다. 키의 공개 부분은 모두에게 알려져 있습니다. 개인 부분은 구성 요소 / 앱 개발자에게만 알려져 있으며 그렇게 유지해야합니다.
어셈블리에 서명하면 어셈블리에 개인 키와 해시 값을 사용하여 어셈블리에 포함 된 디지털 서명을 만듭니다. 그런 다음 어셈블리를로드하는 사람은 확인 단계를 거칩니다. 퍼블릭 키는 어셈블리가 실제로 제공되는지 여부를 확인하는 데 사용됩니다.이 경우 퍼블릭 키가 필요합니다 (어셈블리 매니페스트에 토큰 화 된 형식으로 포함됨). 어셈블리가 훼손된 경우 해시 값이 달라지고 어셈블리로드가 중단됩니다. 이것은 보안 메커니즘입니다.
.snk 파일은 다른 사람이 사용자 대신 자신의 어셈블리를 넣을 수 없도록하는 데 사용됩니다. 한 쌍의 암호화 / 암호 해독 키를 제공합니다.
.snk 파일을 사용하여 어셈블리에 서명하면 어셈블리 파일에서 해시 코드 값이 계산되고 개인 키를 사용하여 암호화됩니다. 그런 다음 암호화 된 "다이제스트"는 .snk 파일의 공개 키와 함께 어셈블리에 고정됩니다.
그런 다음 누군가 어셈블리를 받으면 해시 코드 값을 계산할 수도 있습니다. 공개 키를 사용하여 계산 한 키를 해독하고 계산 된 값을 비교합니다. 어셈블리가 전혀 변경되지 않은 경우 해당 값이 달라지고 어셈블리 사용자는 사용자가 제공 한 어셈블리가 아님을 알게됩니다.
BizTalk Server와 관련하여 BizTalk 솔루션에서 사용하는 사용자 지정 어셈블리를 작성하는 사람은 BizTalk 서버가 GAC에로드하여 사용할 수 있도록 .snk 파일을 사용하여 어셈블리에 서명해야합니다.