2010-11-14 6 views
15

저는 .NET 어셈블리에 서명하는 것을별로 신경 쓰지 않아 기본 메커니즘을 훨씬 넘어서지 않습니다. 내가 작업하고있는 소규모 프로젝트의 경우 서명이 필요했고 암호로 보호 된 새 키를 만들었습니다.강력한 이름 키 암호는 어디에 저장되어 있습니까?

어셈블리를 다시 컴파일 할 때이 암호를 묻는 메시지가 표시 될 것으로 예상되었지만 키 파일을 만든 후 아무데도 입력 할 필요가 없었습니다. 이것은 처음부터 비밀 번호를 보호하는 목적을 무력화시키는 것 같습니다.

암호가 어딘가에 캐시되어 있다고 생각 하나? 어떤 종류의 개인 저장소에 있습니까? 다른 사람에게 내 전체 솔루션 디렉토리에 키 파일을 제공하면 입력 한 암호를 묻는 메시지가 표시되거나 암호없이 어셈블리에 서명 할 수 있습니까?

인터넷에는 강력한 이름 키와 사용에 관한 기사가 많이 있지만 몇 가지 이상한 이유로 그들은 모두 Visual Studio에서 암호가 실제로 어떻게 사용되는지에 대해 자세히 설명합니다.

업데이트 : Visual Studio 및 Windows를 다시 시작하면 아무 효과가 없으므로 캐싱이 지속되는 것으로 보입니다. .suo 파일을 삭제해도 어셈블리 서명에 암호가 필요 없다는 사실은 변경되지 않습니다.

+0

어떻게 파일을 암호로 보호 하시겠습니까? –

+0

@Lasse : Visual Studio에는 키를 만들 때 암호를 보호하는 옵션이 있습니다. .pfx 파일을 열어 보호되는지 확인했습니다. – Thorarin

+0

고마워, 나는 그것을 몰랐다. –

답변

11

Create Strong Name Key Dialog Box에 대한 설명서를 참조하십시오.

암호 정보는 컴퓨터의 암호화 저장 데이터베이스에 저장됩니다.

기타 정보 CLR Inside Out: Using Strong Name Signatures.

키 컨테이너에 대한 무단 액세스를 방지하기 위해 제한된 ACL (액세스 제어 목록)을 사용하여 키 컨테이너에 개인 키를 설치할 수 있습니다. 또는 개인 키를 스마트 카드 또는 다른 개별 하드웨어 장치에 저장할 수 있습니다. sn.exe 도구를 사용하면 다른 암호화 서비스 공급자 (CSP)를 사용하여 서명 할 수 있습니다. sn.exe의 설명서에서 -c 옵션을 살펴보십시오.

+1

흥미 롭습니다 ... 처음에는이 "암호화 스토리지 데이터베이스"에 대한 언급을 찾을 수 없었습니다. 그 이후로 나는 'sn.exe'를 사용하여 Strong Name CSP에서 키를 추가하거나 삭제할 수 있음을 알게되었습니다. 하나의 문제는 Visual Studio에서 키의 임의의 컨테이너 이름을 생성하는 것으로 보이므로 프로젝트와 관련된 삭제 방법을 모르겠습니다. sn.exe를 사용하여 모든 컨테이너 이름을 나열 할 수도 없습니다. – Thorarin

+1

기본 CSP (cryptograhic 저장소 공급자)가 사용자 별 내용을 저장하는 % AppData % \ Microsoft \ Crypto 또는 컴퓨터 전체 키용 % AllUsersProfile % \ Microsoft \ Crypto를 조사하십시오. – sisve

+1

상당히 낮은 수준이지만 키를 찾을 수있었습니다 (유일한 키이기 때문에). KeyPal이라는이 도구를 사용해 보았지만 더 이상 작동하지 않습니다. 지금까지 도움을 주셔서 감사합니다 :) – Thorarin

관련 문제