2015-01-19 4 views
1

FileShare.None을 사용하여 개인 사용자의 데이터가 들어있는 파일을 잠그는 응용 프로그램이 있습니다. 문제는 다른 프로세스 나 사용자가 응용 프로그램을 닫으면 파일이 잠금 해제되고 모든 사람이 저장된 암호에 액세스 할 수 있다는 것입니다. 파일은 암호화되어 있지만 불행히도 비밀 번호를 알아내는 것은 대단히 쉽습니다.응용 프로그램이 닫히는 것을 막으십시오.

내 질문은 : 응용 프로그램이 사용자 또는 작업 관리자에 의해 닫히지 않도록하는 방법이 있습니까? 예를 들어, 바이러스 백신처럼 : ESET NOD32을 닫으려고하면 중지 할 수 없습니다. 그것은 나에게 오류를 제공,

Dim Stream As New Stream = FileOpen("MyApplicationPath", FileAccess.ReadWrite, FileShare.None) 

을 :하지만

내 응용 프로그램의 폼로드 이벤트에이 코드를 삽입하려고했습니다 "파일이 이미 사용 중입니다." 컴퓨터가 실행 파일에 액세스해야하기 때문에이 오류가 발생한다고 상상할 수 있습니다.

다른 방법이 있습니까?

감사합니다.

편집 : 당신의 기사에서, 말한다 : 앤드류 모튼으로

"[...] 확인하려면 암호가 올 경우는 일반적으로 사용자에 저장되도록, 우리는 소금이 필요합니다 계정 데이터베이스를 해시와 함께 또는 해시 문자열 자체의 일부로 포함 할 수 있습니다. " 이것은 소금을 어딘가에 저장해야한다는 것을 의미합니다. 어디에서 저장할 수 있습니까? 그리고 어떻게?

암호가 "hello"이고 소금이 "gfogkdfn"인 경우 "gfogkdfn"을 어딘가에 저장해야합니다. 어디에서나 저장하고 쉽게 찾을 수 있고 시스템에 금이 갈 것입니다 ... 소금도 암호화하려면 "정적"암호화 키가 있어야합니다. 너무 쉽게 분해 할 수 있습니다 (그냥 리버스 엔지니어링을 수행하십시오. 내 프로그램 또는 모르는 다른 방법).

나는이 방법의 문제라고 생각한다. 가능한 해결책이 있습니까? 감사

+3

이것은 XY 문제 (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)처럼 들립니다. 진짜 질문은 "이 응용 프로그램에서 사용자 데이터를 어떻게 보호해야합니까?"라고 생각해야합니다. – phoebus

+0

글쎄, 그렇지 않아. 내 시나리오를 더 잘 이해할 수 있도록 절차를 제안했습니다. 나는 다른 사람들이 나의 필요에 맞는 다른 해결책을 갖고 있는지 물어 보았다. 어쨌든 고마워. -_FWite_ – PWhite

+0

내 응용 프로그램에서 사용자 데이터를 보호하는 또 다른 방법은 좋은 질문입니다. 이 작업을 수행하는 다른 방법이 있다면 알려주십시오! – PWhite

답변

3

긴 대답 : 확실히 응용 프로그램 거의 종료되지 않습니다 만들기 위해 완전히 가능하다.

  • 백그라운드에서 유지하고 프로세스가 프로세스 목록에서 사라 경우 응용 프로그램을 다시 시작 작은 "감시자"서비스를 작성하십시오이 일을 가능한 방법 및 요령 수 있습니다. 물론 누군가가 그걸 막을 수도 있습니다. 응용 프로그램과 감시자 서비스가 둘 다 서로 살아있을 수 있습니다.
  • Windows 작업 스케줄러를 사용하여 응용 프로그램이 실행 중인지 확인하고 그렇지 않은 경우 시작하는 작업 (배치 파일, 작은 부트 스트랩 프로그램)을 반복적으로 실행하십시오.
  • * .exe 파일의 셸 처리기와 같은 하위 수준 OS 루틴에 연결하여 프로그램이 컴퓨터에서 실행될 때 응용 프로그램이 실행되도록 보장합니다.

언급 한대로 바이러스 백신 프로그램은 항상 이와 같은 기술을 사용합니다. 동전의 측면에서 악성 코드 및 스파이웨어는 종종 이러한 트릭을 사용합니다 (특히 마지막 하나와 같은 것 - 처음에는 감지하기 힘듭니다!). 항상 실행되고 있는지 확인하십시오.

이렇게 말한 것처럼, 은 거의을 닫지 않습니다. 감시 서비스가 중단되거나 사용자가 한 번에 두 명을 죽이거나 안전 모드로 부팅 할 수있는 시나리오가 항상 있기 때문에 "드물게"라고 말합니다. 악의적 인 크래킹 시도로부터 보호하려는 경우 무한히 더 사실입니다. 적당히 스마트 한 크래커는 이러한 기술로는 단계적으로 진행되지 않습니다.

의도가 민감한 사용자 데이터를 보호하는 경우 여기에 가장 큰 문제는 시간의 100 % 잠긴 파일 경우에도 동기 공격자는 단순히 컴퓨터를 뽑아 다른 컴퓨터에 저장 장치를 넣을 수 있다는 것입니다 , 그리고 그들이 원하는만큼 읽으십시오.

짧은 답변 :이 문제에 대한 잘못된 접근입니다. 모든 사람이 데이터를 볼 수 있다고 가정하고 좋은 보안 방법으로 강력하게 암호화하여 문제가되지 않도록해야합니다.

+0

Andrew가 소금에 절한 암호 해시에 게시 한 링크가 좋은 시작입니다. –

+0

고맙습니다. 네이트. 제가 이해했다면, 앤드류의 해결책은 아주 큰 문제가 있습니다 : 소금 끈을 어디에 보관합니까? 지금 Windows 서비스를 사용하여 응용 프로그램이 작동하는지 확인합니다. Windows 서비스를 종료하기가 쉽지 않습니다. 고마워요, -_FWhite – PWhite

+0

소금물이 소금기가없는 것보다 낫지 만, 모든 보안에 대해 파일 기반 잠금에 의존하는 것보다 낫습니다. 다시 말해, 그것은 아주 나쁜 생각입니다! Windows 서비스는 쉽게 종료 할 수 있습니다. 저는 보안이나 암호화 전문가는 아니지만 암호화 기술에 대한 연구를 적극 권장합니다. 이 문제는 이전에 해결되었으며 민감한 데이터를 암호화하는 데 사용할 수있는 매우 성숙한 방법이 있습니다. –

관련 문제