2013-02-19 5 views
6

내 응용 프로그램에서 선택한 구성 파일을 보호 할 수 있습니다. 이것은로드 된 Configuration의 지정된 섹션에 대해 SectionInformation.ProtectSection 메소드를 사용하여 수행됩니다. 표준 공급자 RsaProtectedConfigurationProvider을 사용하고 있습니다.코드에서 RSAProtectedConfigurationProvider의 키 크기를 설정하는 방법

코드는 매우 간단합니다. example on MSDN과 매우 유사합니다.

공급자가 사용해야하는 키 크기를 설정할 수있는 방법이 있습니까? 내가 아는 한 RSA의 기본값은 1024입니다. 2048 이상으로 설정해야합니다.

우리가 asp_regiis.exe 를 사용할 때 명령 행 옵션 -size을 사용하여 수행 할 수있는 유사합니다. 하지만 코드에서 처리해야합니다. 어쩌면 RsaProtectedConfigurationProvider을 구성하거나 사전 작성 키를 구성하여 기본 키 저장소에 어떻게 든 삽입 할 수 있습니다. 따라서 SectionInformation.ProtectSection을 사용하면 다음을 따라 잡을 수 있습니다.

어떤 조언이나 예제를 가져 주셔서 감사합니다.

+0

내가 사용하여 자신의 키 컨테이너를 작성해야한다고 생각하고 다음을 가리키는 [keyContainerName] (http://msdn.microsoft.com/en-us/library/68ze1hb2 (V = VS.100) .aspx) 특성. –

+0

이게 문제를 해결할 수 있습니까, kirmir, 의견에 응답하십시오. –

+0

@owlstead, 아마도 예. 내가 좋아하지 않는 유일한 것,이 경우 나는 모든 암호화 된 설정 파일에 컨테이너 설정을 써야만한다는 것이다. 또한 컨테이너에 대한 액세스 권한을 구성해야합니다. –

답변

1

RSAProtectedConfigurationProvider은 두 가지 다른 방법을 제공합니다. AddKey이라는 키를 사용하여 컨테이너 내부에 키를 생성 할 수 있습니다. 키를 내보낼 수있는 것으로 표시하면 나중에 ExportKey 메서드를 사용하여 해당 키를 가져 와서 다른 위치에 저장할 수 있습니다.

이미 기존 키가있는 경우 ImportKey 방법을 사용할 수 있습니다. ExportKey에서 나오는 것과 비슷한 XML blob을 허용합니다.

RsaProtectedConfigurationProvider은 기본 컨테이너 이름이 인 NetFrameworkConfigurationKey이없는 경우 사용합니다. 따라서 키를 미리 작성하여 해당 컨테이너에 추가하면 공급자가 키를 사용할 때이를 가져와야합니다.

// Same properties as .NET uses to load the key 
CspParameters csp = new CspParameters(); 
csp.KeyContainerName = "NetFrameworkConfigurationKey"; 
csp.KeyNumber = 1; 
csp.ProviderType = 1; 

// Create the new key, and save it in the key store 
rsa = new RSACryptoServiceProvider(2048, csp); 
rsa.PersistKeyInCsp = true; 
rsa.Clear(); 
관련 문제