2010-05-07 3 views
1

다음 상황이 있습니다.RSACryptoServiceProvider에서 사용하기 위해 컴퓨터에 RSA 키를 만드는 방법은 무엇입니까?

여러 컴퓨터에서 여러 응용 프로그램이 RSA 암호화를 사용하여 데이터베이스에 저장된 정보를 공유하려고합니다.

오늘 나는 더 안전한 방법이 아닌 방식으로이 작업을 수행하고 있습니다. 이러한 컴퓨터는 XML에서 RSA 키가 들어있는 DLL을 공유합니다.

이 XML의 정보를 사용하여 다른 컴퓨터에서 컴퓨터 키를 생성 한 다음 어떻게 RSACryptoServiceProvider에서 사용할 수 있습니까?

답변

2

내가 과거에했던 무엇 : (.이 단지 개요이다, 당신은 실제 코드를 필요로하는 경우, 나는 그것을 제공 할 수 있지만, 귀하의 질문에 그냥 아이디어를 찾고처럼 들린다)

다음 필수 각 기계에서 행해지십시오. (이 작업을 수행 할 수있는 간단한 콘솔 응용 프로그램, 또는 PowerShell 스크립트를 작성할 수 있습니다.)

  • 사용 ProtectedData.Protect
  • 스토어 레지스트리에서 암호화 키를 암호화 할 수 있습니다. 추가 보안을 위해 레지스트리 키에 대한 ACL 권한을 설정할 수 있습니다. 앱에서

키를 얻을 수 ProtectedData.Unprotect를 사용하여, 다음 암호화 및 암호 해독을 위해 RSACryptoServiceProvider에 그것을 전달합니다.

+0

안녕 데이브, 내 문제는 정말 어떻게 할 수있는, 나는 코드 또는 xml 또는 뭔가에서 컴퓨터 키를 생성 할 수있는 도구를 모르겠다. 이 머신 키를 다른 머신에 생성하려면이 "마스터 키"를 유지해야합니다. –

+0

ProtectedData 클래스가이를 처리합니다. DPAPI (Windows에 내장되어 있음)를 사용하여 암호화를위한 시스템 고유 (또는 사용자 별) 키를 생성합니다. 그 키는 각 머신마다 다르다. 그래서 각 머신에서'.Protect'/registry를 실행해야한다. 완료되면 XML 파일에서 삭제할 수 있습니다. (실제 RSA 키를 KeePass에 저장하면 필요하다면 나중에 참조 할 수 있습니다.) 이렇게하면 어디서나 "일반 텍스트"키가없고 보안은 Windows 표준 (계정 사용 권한/ACL) –

+0

죄송합니다, 지금 당장이 문제를 해결할 수는 없을 것입니다. 하지만 http://blog.shutupandcode.net/?p=538에는 첫 번째 부분이 있습니다. 개인 키를 쉽게 손상시킬 수 없도록 위의 ProtectedData 항목을 개인 키 XML에만 추가합니다. –

1

생성자 RSACryptoServiceProvider()은 새 키 쌍을 만드는 데 사용할 수 있습니다. Machine 키를 생성하거나 생성 된 키 쌍의 다른 매개 변수를 정의하려면 RSACryptoServiceProvider(CspParameters parameters) 생성자를 사용해야합니다. 새 CspParameters 인스턴스 (예 : cspParams)를 만들고 cspParams.Flags ~ CspProviderFlags.UseMachineKeyStore을 입력하십시오. 그런 다음 RSACryptoServiceProvider(CspParameters parameters) 생성자를 존중하여 컴퓨터 키를 생성 할 수 있습니다.

관련 문제