2013-02-04 3 views
4

컴퓨터에 암호를 저장하여 액세스 할 수없는 가장 좋은 방법은 무엇입니까? 나는 그들을 암호화 된 레지스트리에 저장하고 싶습니다. 암호를 재설정 할 수 있으면 좋겠지 만 서버에서는 사용할 수 없습니다. 이것은 컴퓨터에 저장하여이를 기억하고 자동으로 로그인하기위한 것입니다.암호를 안전하게 저장하는 가장 좋은 방법

중요 편집 : 프로그램 내에서 일반 텍스트 암호를 검색 할 수 있어야합니다.

+2

http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database/ –

+0

하지 코멘트에 대답 질문 버튼을 사용하여 답변을 게시하시기 바랍니다. –

+0

erm, 아니요! 그것은 링크입니다. 그것을 클릭하는 것은 매우 쉽습니다 ... –

답변

3

CryptUnprotectData은 Windows에서 가장 좋습니다. 그들은 로그인 자격 증명을 사용하여 데이터를 암호화하므로 암호는 디스크 공격으로부터 안전합니다. 그러나 동일한 사용자로 실행되는 모든 프로그램에서 액세스 할 수 있습니다. 다른 사용자가 액세스 할 수있는 권한이있는 파일 (예 : 관리자 권한이 필요한 파일)에 파일을 저장하는 것이 좋습니다.

관리되는 클래스 ProtectedData은 이러한 기능을 사용하므로 C#에서 사용할 수 있습니다.

P/Invoke를 사용하여 이러한 기능을 직접 사용할 수도 있습니다. 정확히 here을 수행하는 몇 가지 예제 코드가 있습니다. 추가 요구 사항에 응답

확장 :

이 많이 걸릴 것입니다하지만, 프로그램이 관리자 권한으로 실행되는 프로그램을 필요없이 비밀번호를 액세스 할 수있는 유일한 사람인지 확인하는 방법이있다 더 많은 일.

기본적인 아이디어는 응용 프로그램을 설치할 때 설치되는 Windows 서비스를 만드는 것입니다. 사용자 암호를 저장/검색하려는 경우 응용 프로그램의 요청에 따라 실행해야합니다. 이 서비스는 관리자 만이 읽고 쓸 수 있도록 권한이 설정된 파일에 읽기/쓰기 권한을 제공합니다. 추가 보안은 Named Pipe을 사용하는 프로세스에 대한 IPC 연결에서 제공됩니다. 그런 다음 GetNamedPipeClientProcessId (미안하지만, P/Invoke가 필요함)을 사용하여 파이프에 연결된 클라이언트의 프로세스 ID를 조회하여 요청을 인증 할 수 있습니다.

보안에 대한 염려 정도에 따라 올바른 인증서에 액세스 할 수있는 경우 코드 서명을 사용하여 프로세스 ID를 확인할 수 있습니다. 또는 실행 파일의 체크섬이나 그 종류의 내용을 확인할 수 있습니다.

이것은 Windows에서 찾고있는 보안을 만들 수있는 유일한 방법입니다. 또한 응용 프로그램은 ProtectedData를 사용하여 데이터를 하드 디스크 공격으로부터 보호하기 위해 Windows 서비스로 넘겨 받기 전에 데이터를 암호화해야합니다.

+0

.NET에서이를 수행 할 수있는 관리 된 방법이 있습니까? –

+0

내 프로그램에서 암호 파일을 여는 데 관리자 priveliges 필요하지 않아야 ... 그리고 이것은 프로그램을 통해서만 액세스 할 수 있어야합니다. –

+2

Windows의 권한 모델은이 기능을 지원하지 않습니다. 프로그램이 추가 사용 권한을 얻지 않고 액세스 할 수 있으면 동일한 사용자로 실행중인 모든 프로그램이 액세스 할 수 있습니다. –

-1

나는 내가 찾고있는 것이 AES라고 믿는다. 암호를 저장하는 쉬운 방법 인 것 같습니다. 물론 이것은 컴퓨터의 암호를 기억하기위한 것일 뿐이므로 사용자가 암호를 입력 할 필요가 없습니다.

http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

+1

문제는 AES 키를 저장하려는 위치로만 문제를 이동시키는 것입니다. 이 문제에 대한 좋은 해결책은 없지만'CurrentUser' 보호 범위를 가진'ProtectedData'는 가장 근접합니다. 아마도 AES로 무언가를 만들어가는 것은 그렇게 좋은 생각은 아닙니다. – CodesInChaos

+0

아마도 프로그램에 키를 하드 코딩 할 것입니다. 이게 안전하지 않니? 프로그램이 해체되면 누군가가 열쇠를 알아낼 수 있습니까? –

+0

나는 그것을 조사 할 것이다. 나는 AES에 관한 연구를하고 어떤 일이 일어날지를 볼 것입니다. –

관련 문제