2016-11-01 2 views
-4

저는 매번 시작할 때마다 서버에서 파일을 다운로드하는 C#으로 작성된 Windows 데스크톱 응용 프로그램 (WPF)을 작업 중입니다. 이 파일은 응용 프로그램 작동에 중요한 역할을합니다.플라이 암호 기능 구현 방법

이러한 파일의 내용을 AES와 같은 암호화 형식으로 보호하고 싶습니다. 이러한 파일은 응용 프로그램에서 읽을 때도 암호화 된 상태로 유지되어야합니다. 따라서 응용 프로그램에서 파일에 액세스 할 때 즉시 파일의 암호를 해독 할 방법을 찾고 있습니다. 즉, 응용 프로그램 만 파일을 이해할 수 있지만 사용자가 다른 프로그램에서 파일을 열면 여전히 암호화됩니다.

구현에 대한 아이디어 나 기사를 공유 할 수 있다면 좋을 것입니다. 감사!

편집 1 :가 응용 프로그램을 찾아 사용 의 CefSharp을 만드는 HTML/JS/각 시작시 서버에서 다운로드 한 CSS 파일.

편집 2 :TrueCrypt과 같은 것을 구현하려고합니다.

편집 3 : TrueCrypt가 수행 할 수있는 작업을 수행하고 싶습니다. 이 파일은 파일을 암호화하고 암호화 된 파일은 파일이 열릴 때 즉시 해독하기 때문에 모든 프로그램에서 열 수 있습니다. 내 응용 프로그램의 임베디드 브라우저 (CefSharp)로로드 된 HTML/JS/CSS 파일을 보호하기 때문에이 파일이 필요합니다.

답변

0

.NET Framework의 System.Security.Cryptography Namespace을 사용해야합니다. Herehere 두 가지 예를 사용할 수 있습니다.

참고 : 먼저 FileStream 또는 System.IO.File.ReadAllBytes을 사용하여 AS BYTES [] 파일의 내용을 읽어야합니다. 그리고 KEY를 구현해야합니다. 즉, 응용 프로그램에 하드 코드되고 디 컴파일러를 사용하여 찾을 수 있습니다! 그래서 사용자가 데이터를 읽지 못하도록하는 것은 거의 불가능합니다.

+0

신속한 답변을 보내 주셔서 감사합니다. 내 게시물을 조금 편집했습니다. 당신의 대답은 좋지만 제 경우에는 적용되지 않을 수도 있습니다 ... –

+0

@GordonLuvinsky Thomas가 옳습니다. 사용자가 데이터를 읽지 못하게하는 것은 불가능합니다. 서버 관련이 필요합니다. 이 질문은 거의 매일 요청되며 거의 매일 같은 응답을받습니다. –

0

Thomas가 말했듯이 System.Security.Cryptography을 사용하는 것이 데이터를 암호화하는 가장 좋은 방법입니다. 그러나 클라이언트 응용 프로그램에 암호화 키를 포함시켜야하며이 응용 프로그램에 액세스하는 모든 사람이 키를 추출하기가 매우 쉽습니다.

파일을 암호화하는 데 시간을 낭비하지 않는 것이 좋습니다.

2

은 사용자가 PC와 같은 개방형 플랫폼에서 보호되지 않은 파일에 액세스하지 못하도록 할 수 없음을 알아야합니다. 이것이 DRM이 수십 년 동안 달성하고자하는 목표입니다. 그러나이 목표는 정의상 unachievable입니다.

당신이 할 수있는 유일한 일은 보호되지 않은 파일에 액세스하는 것이 더 힘들거나 어렵다는 것입니다. 그러나 누군가 결국 보호를 우회하기에 충분한 노력을 기울이면 그녀는 항상 성공할 것입니다.

예를 들어, 전용 obfuscator 또는 최소화하여 소스 파일을 난독화할 수 있습니다. 일부 비표준 파일 인코딩 (base64의 반대)을 사용하거나 일부 종류의 암호화 방법을 사용할 수 있습니다. 아무리 안전하게 또는 안전하지 않더라도 암호화 방법을 사용하여 키를 배송해야하기 때문입니다.

마지막으로 다른 언급 된 것처럼 암호 프리미티브는 System.Security.Cryptography 네임 스페이스에 있습니다. 그러나 보안에 민감한 시스템의 경우에는 뉘앙스가 많고 올바르게 가져 오는 것이 실제로 어렵 기 때문에 직접 사용하지 않는 것이 좋습니다. 암호화 기본값을 안전한 기본값으로 래핑하는 SecurityDriven.Inferno과 같은 라이브러리를 살펴 봐야합니다.

+0

안녕하세요, 귀하의 답변에 감사드립니다. 내 게시물을 조금 편집했습니다. 기본적으로 저는 TrueCrypt와 같은 것을 구현하려고합니다. 따라서 TrueCrypt와 같은 것을 만드는 방법을 가르치는 기사를 공유하거나 몇 가지 단계를 공유 할 수 있다면 좋을 것입니다. 나는 DRM의 무용지 함을 잘 알고 있으며 내 고객과 이야기하기 위해 최선을 다할 것입니다. 그러나 호기심에서 벗어나 진정으로 TrueCrypt와 같은 것을 만드는 것을 알고 싶습니다. :) –