2017-12-18 3 views
0

.NET C#에서 Soft-Phone 응용 프로그램을 만들려고하는데 응용 프로그램에 사용자 이름과 암호를 저장할 때 벽에 부딪혔습니다. SQL Server 사용에 대해 생각해 봤지만 암호를 일반 텍스트로 저장하는 데 익숙하지 않아이 작업을 수행하기 위해 다른 옵션이 있는지 궁금합니다. 이 프로그램을 개발하는 동안 여기 내 제약 조건은 다음과 같습니다타사 로그인 용 비밀번호 저장

  • 안전하게 암호 인증 다른 서버로 전송 될 필요가 같이 암호를 해시 할 수 없습니다 사용자 이름 및 암호 정보
  • 을 저장해야합니다.
  • 로그인 정보는 프로그램 실행간에 유지되어야합니다. 사용자는 처음 프로그램을 실행할 때 한 번만 로그인 정보를 저장하면되고 프로그램이 나중에로드 될 때마다 사용자 정보를 자동으로로드하고 사용자에게 암호를 다시 묻지 않고 서버로 인증해야합니다.
  • 데이터베이스는 응용 프로그램 자체에 포함되어 사용자 컴퓨터에 로컬로 저장됩니다.

C#으로 데이터베이스 기능을 구현하는 아이디어를 처음으로 들었습니다. 어떤 제안이나 권장 사항도 환영합니다. 나는 SQL 사용에 익숙하지만, 내가하려고하는 것으로 더 잘 작동하는 대체 데이터베이스가 있다면, 그것을 시도해 볼 의향이있다.

+0

글쎄, 첫 번째, 두 번째 및 마지막 요구 사항은 상호 배타적입니다. 암호가 해시되지 않은 경우 클라이언트 컴퓨터에 안전하게 저장할 수 없습니다. 해시되지 않은 경우에도 서버에 안전하게 저장할 수 없습니다. –

+0

해싱은 현재 입력 (해시/소금에 절인)의 암호를 해시/소금에 절인 암호와 비교하는 저렴한 방법 일뿐입니다. 아마도 PGP를 생각해 보면 암호를 되돌릴 수있는 암호화를 찾고있을 가능성이 높습니다. 사용자가 처음 실행할 때 비공개/공개 키를 만들어 클라이언트의 Windows 키 저장소에 저장하고이를 사용하여 SQL Server에 저장하기 전에 userdata를 암호 해독/암호 해독하십시오. 키 쌍이 손실되면 저장된 데이터도 손실되므로 사용자는 키를 다시 만들고 저장해야합니다. 사용자에게 개인 키를 배포하지 말라고 알립니다. 이것은 단지 deterrend입니다. –

+0

컴퓨터를 가져 와서 Windows- 로그인 PW를 해킹 한 사람은 누구나 사용자로 실행중인 사용자 pwstore에 액세스 할 수 있습니다. 세션 당 한 번씩 자신의 파워를 누적시키는 것이 더 안전 할 것입니다. 또한 prefab crypt/decrypt 방법과 소스 코드에 저장하는 키를 사용하여 자신 만의 암호화 dll을 구현할 수도 있습니다. 어쩌면 대체로 const로 배포되지 않고 배포되었을 수도 있습니다. 또한 deterrend - 만약 누군가가 충분히 정교 해져서 키 저장을 리버스 엔지니어링하면, 다시 사용되는 방법을 사용할 수 있습니다. –

답변