.snk 파일이란 무엇입니까? 강한 이름의 키을 나타내지 만, 그것이 무엇인지, 어떻게 작동하는지에 대한 모든 설명은 내 머리 위로 간다..snk 란 무엇입니까?
강력한 이름의 키가 사용되는 방식과 작동 방식에 대한 간단한 설명이 있습니까?
.snk 파일이란 무엇입니까? 강한 이름의 키을 나타내지 만, 그것이 무엇인지, 어떻게 작동하는지에 대한 모든 설명은 내 머리 위로 간다..snk 란 무엇입니까?
강력한 이름의 키가 사용되는 방식과 작동 방식에 대한 간단한 설명이 있습니까?
.snk 파일은 strong name to a .NET assembly을 적용하는 데 사용됩니다. (제공 경우) 공개 키와 디지털 서명을 - 플러스와 같은 강력한 이름은
간단한 텍스트 이름, 버전 번호, 문화 정보로 구성되어 있습니다.
SNK에는 고유 한 키 쌍이 포함되어 있습니다.이 키 쌍은 개인 키와 공개 키를 포함하고있어서 어셈블리에 고유 한 강력한 이름을 사용할 수 있습니다. 어셈블리의 이름이 강하게 지정되면 어셈블리의 내용에서 "해시"가 생성되고 해시는 개인 키로 암호화됩니다. 그런 다음이 서명 된 해시는 .snk의 공개 키와 함께 어셈블리에 배치됩니다.
나중에 누군가가 강력한 이름의 어셈블리의 무결성을 확인해야하는 경우 어셈블리의 콘텐츠 해시를 작성하고 어셈블리의 공개 키를 사용하여 어셈블리와 함께 제공된 해시를 해독합니다. 두 해시가 일치하면 어셈블리 확인이 통과됩니다.
누구도 어셈블리를 전체 응용 프로그램을 파괴 할 수있는 악의적 인 어셈블리로 교체하지 않도록이 방법으로 어셈블리를 확인할 수 있어야합니다. 따라서 강력한 이름이 아닌 어셈블리는 강하게 명명 된 어셈블리와 동일한 방식으로 신뢰되지 않으므로 GAC에 배치 할 수 없습니다. 또한 신뢰할 수있는 체인이 있습니다. 강하게 명명되지 않은 어셈블리를 참조하는 강력한 이름의 어셈블리는 생성 할 수 없습니다.
"The Secrets of Strong Naming" 이 개념을 더 자세히 설명하는 훌륭한 일을합니다. 사진과 함께.
.snk 파일은 프레임 워크 유틸리티 세트에서 sn 유틸리티가 생성 한 "키"의 지속 된 버전입니다. 그러면이 파일을 사용하여 어셈블리에 '디지털 서명'합니다. 그것은 2 부분 키입니다. 개인 공개 키 조합. 키의 공개 부분이 게시되었으므로 모든 사람에게 알립니다. 비공개 부분은 사용자, 구성 요소/앱 개발자에게만 알려지며 그러한 방식으로 보관됩니다.
어셈블리에 서명하면 어셈블리의 개인 키와 해시 값을 사용하여 어셈블리에 포함 된 디지털 서명을 만듭니다. 그런 다음, 어셈블리를로드하는 모든 사용자는 확인 단계를 거칩니다. 공개 키는 어셈블리가 정말로 당신에게서 왔는지를 확인하는 데 사용됩니다.이 경우 공개 키가 필요합니다 (어셈블리 매니페스트의 토큰 화 된 형식에도 포함되어 있음). 어셈블리가 변경되면 해시 값이 달라 어셈블리로드가 중단됩니다. 이것은 보안 메커니즘입니다.
the.Net 세계에서 SNK 파일은 컴파일 된 바이너리에 서명하는 데 사용됩니다. 이 몇 일이 일어날 수 있습니다 :
내가 어떻게 BizTalk 서버 작품에 익숙하지 않은, 그래서 나는 그들이 그 환경 내에서 역할을 어떤 특정 목적에 많은 빛을 흘릴 수 있다고 생각하지 않습니다.
희망이 다소 도움이되었습니다.
.snk 파일은 어셈블리를 서명하여 GAC (전역 어셈블리 캐시)에 추가 할 수 있도록 사용됩니다.
.snk 파일에는 키의 공개 토큰과 개인 토큰이 있습니다. 해당 키를 사용하여 일부 데이터 (또는 바이너리)에 서명하려면 데이터에서 체크섬을 계산 한 다음 개인 토큰으로 암호화합니다. 그런 다음 암호화 된 체크섬이 데이터에 추가됩니다. 누구든지 키의 공개 토큰을 사용하여 체크섬을 해독하고 계산 된 체크섬과 비교하여 서명 된 데이터가 변조되지 않았는지 확인합니다.
공개 키 암호화에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Public-key_cryptography입니다.
.snk 파일은 다른 사람이 자신의 어셈블리에서 자신의 어셈블리를 이동할 수 없도록하는 데 사용됩니다. 한 쌍의 암호화/암호 해독 키를 제공합니다.
어셈블리 서명에 .snk 파일을 사용하면 해시 코드 값이 어셈블리 파일에서 계산되고 개인 키를 사용하여 암호화됩니다. 암호화 된 "다이제스트"는 .snk 파일의 공개 키와 함께 어셈블리에 추가됩니다.
누군가가 어셈블리를 수신하면 해시 코드 값을 계산할 수도 있습니다. 그들은 공개 키를 사용하여 계산 한 값을 해독하고 계산 된 값을 비교합니다. 어셈블리가 전혀 변경되지 않은 경우 해당 값은 달라 지므로 어셈블리 사용자는 자신이 가지고있는 어셈블리가 사용자가 제공 한 어셈블리가 아니라는 것을 알게됩니다.
BizTalk Server와 관련하여 BizTalk 솔루션에서 사용되는 모든 사용자 지정 어셈블리를 작성하는 사람은 .snk 파일을 사용하여 BizTalk Server가 GAC에로드하고 사용할 수 있도록 어셈블리에 서명해야합니다.
.PFX를 사용하여 어셈블리에 서명 할 때 컴파일 할 때마다 .SNK를 생성하기 위해 실제로 .SNK를 사용한다는 것을 의미합니까? – Patrick
@Patrick no, [Authenticode Signature] (http://technet.microsoft.com/en-us/library/cc750035.aspx)는 서명과 확인 사이에 파일이 수정되지 않았 음을 입증하지만, 강력한 이름 요구 사항을 충족시키지 못합니다. 문제는 Authenticode가 강한 명명에 필요한 어셈블리의 신뢰 체인을 필요로하지 않으므로 Authenticode가 강력하지 않은 명명 된 어셈블리에 의존하는 어셈블리에 서명 할 수 있습니다. –
당신은 snk를 벗기고 그것을 다른 것으로 대체 할 수 있습니다 .. 나는 그것이 유용한 실제 시나리오를 모른다. 기본적으로 우리의 키 쌍은 당신이 그것에 대한 신뢰를 구축 할 수 없다. – Ibrahim