문제

좋아, 나는 이미 이것을 읽었 기 때문에 멍청해야한다.http://www.csharp411.com/net-assembly-faq-part-3-strong-names-and-signing/

그리고 나는 아직도 그것을 얻지 못한다 ...

프로젝트의 속성을 열고 "서명"탭으로 이동 한 다음 "어셈블리 서명"을 확인하고 비밀번호로 새 어셈블리를 생성한다고 가정 해 봅시다. 공개 및 개인 키가 모두있는 .pfx 확장자가있는 강력한 이름 키 파일이 만들어졌으며 vs는 컴파일시 어셈블리를 디지털로 표시 할 것입니다.

개인 키는 어떻습니까? 사적이어서는 안되고 개발자 인 나에게는 유일한 사람이어야합니까? 어셈블리는 공개 키와 만 서명해서는 안됩니까?

누구든지 이것을 나에게 설명 할 수 있습니까? 기본적으로 프로젝트 어셈블리에 서명하고 사용자가 제가 개인 키를 유지하는 유일한 곳에서 조립품이 실제로 개발되었는지 확인할 수 있습니다 (내가 생각해야한다고 생각합니다).

도움이 되었습니까?

해결책

당신은 기본적으로 옳습니다.

키 쌍을 만들고 서명에 사용합니다. 그러나 PFX (또는 SNK) 파일을 배송하지 마십시오. 공개 및 개인 키가 모두 포함되어 있으며 안전하게 유지해야합니다.

공개 키는 서명 프로세스의 일부로 어셈블리에 추가됩니다.

이 서명은 어셈블리가 응용 프로그램에로드되면 확인됩니다. 최종 사용자는 GAC에서 공개 키 토큰을 확인할 수 있지만 실제로는 편리한 과정이 아닙니다. 그리고 당신은 그들에게 공개 키 토큰을 어떤 식 으로든 말해야합니다.

그리고 모든 것은 키 파일을 비공개로 유지하는 능력만큼 신뢰할 수 있습니다.

또한 이상적으로는 회사 당 1 개의 키만 있어야합니다. (많은) 동료들과 공유하는 것에 대해 걱정한다면 지연 서명을 조사하십시오.

다른 팁

디지털 서명에는 이진의 해시를 계산 한 다음 생성 한 키 쌍에서 개인 키를 사용하여 생성 된 해시를 암호화하는 것이 포함됩니다. 이 외에도 VS는 공개 키를 조립에 추가합니다. 이제 클라이언트 측에서 실행되면 런타임은 어셈블리의 공개 키를 사용하여 서명 (HASH)을 해독 한 다음 클라이언트에서 이진의 계산 된 해시와 일치합니다. 그들이 일치한다면, 그것은 이진이 변조되지 않았다는 것을 의미합니다.

어셈블리 서명은 기반입니다 공개 키 암호화 (PKI). 간단히 말해서 일반적인 개념은 PKI로 암호로 서명 할 때 개인 키가 서명을 수행하는 데 사용되지만 공개 키는 서명을 확인하는 데 사용된다는 것입니다. 개인 키를 사용하여 서명을 확인하고 만듭니다. 공개 키를 사용하여 서명을 작성하는 데 사용할 수 없으며 확인할 수 있습니다.

이를 감안할 때, 개인 키를 안전하고 개인적으로 유지하는 것이 매우 중요합니다. 최고 수준의 보안을 유지하고 고객에게 최고 수준의 진위를 제공하려면 지연 서명을 사용하는 것이 가장 좋을 것입니다. 단일 개인 또는 부서가 전체 공개/개인 키 쌍을 관리 할 책임이 있습니다. . 개발자는 개인 키에 액세스 할 수 없어야하며 Delay-Sign 옵션을 사용하여 보안과 진정성을 손상시키지 않으면서도 강력한 이름의 어셈블리를 개발할 수 있습니다.

서명 = 개인 키를 사용하여 어셈블리의 SHA1 해시 암호화
검증 = 공개 키 디렉션 서명과 어셈블리의 컴퓨터 해시 비교

따라서 Publickey가있는 사람은 누구나 어셈블리를 확인할 수 있지만 PrivateKey를 가진 저자 만 조립에 서명 할 수 있습니다.

Publickey Token = Little-Endian 바이트 순서에서 Public Key의 SHA1 해시의 마지막 64 비트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top