2015-01-05 2 views
5

저는 작업중인 애플리케이션에 중요한 데이터를 저장하려고합니다. 저는 Microsoft에서 제공 한 ProtectedData 클래스를보고 있으며 매우 간단합니다. 그러나, 나는 그것이 작동하는 방법에 관한 몇 가지 질문이 있습니다.ProtectedData는 여러 컴퓨터에서 작동합니까?

먼저, "사용자의 로그인 자격 증명"을 사용하여 암호화 키를 생성합니다. 문서에서는 현재 사용자 만 데이터를 해독 할 수 있습니다. 문제가되지는 않습니다. 같은 사용자가 다른 컴퓨터에 로그인했는지 여부를 알고 싶습니다. 데이터를 해독 할 수 있습니까? 저장 한 정보를 OneDrive를 통해 공유 할 계획이므로 같은 사용자가 사용하는 모든 장치에서 액세스 할 수 있기를 바랍니다.

예 :

User A logs in on desktop computer, saves encrypted file abc.txt 
User A then logs in on tablet, loads file abc.txt 

abc.txt 접근 사용자 태블릿에에?

둘째, 사용자가 비밀번호를 변경하면 어떻게됩니까? 암호화 키가 다른 것 같아서 이전 암호화 키를 사용하는 데이터의 암호 해독이 더 이상 복구 할 수 없게되는 것입니까?

예 :

User A logs in on desktop computer, saves encrypted file abc.txt 
User A changes password 
User A logs in on desktop computer, loads file abc.txt 

abc.txt 접근 더 이상 유저 (A)을 에 ??

+0

: 분리 된 로밍 저장소를 얻을 수

using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null)) { isoStore.CreateDirectory("TopLevelDirectory"); isoStore.CreateFile("abc.txt"); } 

예 :

예는 고립 된 로밍 저장소를 만들 수 있습니다 '대신. 적어도 특정 사용자에게 직접 연결되지 않은 것. 여전히 ProtectedData는 여러 명의 워크 스테이션에서 동일한 로그인 사용자로 작동합니까? –

+0

나는'ProtectedData'는 실제로 여러 대의 컴퓨터에서 사용하도록 설계되지 않았다고 말할 것입니다. 이는 "메모리 내"데이터 보호에 더 적합합니다. 당신은 전선을 통해 전송하려는 암호화를 위해 좋은 Crypto 서비스를 사용해야합니다. 나는 그것이 다중에 대해 작동 할 것이라는 점을 의심한다. 이것은 .NET이 아니기 때문에 컴퓨터입니다. DPAPI를 사용합니다. –

답변

4

태블릿에서 사용자 A는 abc.txt에 액세스 할 수 있습니까?

"는, 도메인 사용자 만 도메인에 하나의 컴퓨터에 로그인해야 로밍 프로필을 사용합니다 때 DPAPI가 제대로 작동합니다. 사용자가 원하는 경우 로그에에에있는 다른 컴퓨터에 대한 도메인에 연결할 때 사용자가 두 번째 컴퓨터에 로그온하기 전에 먼저 로그 오프해야합니다 사용자가 동시에 여러 컴퓨터에 로그온 한 경우 DPAPI는 기존 암호화 된 암호를 해독 할 수 없습니다 데이터를 올바르게. " - http://support.microsoft.com/kb/309408

abc.txt는 더 이상 사용자 A에게 액세스 할 수 있습니까? 단일 컴퓨터에서 암호를 변경 한 후에도 사용자는 이전에 암호화 된 파일에 계속 액세스 할 수 있어야합니다. 내 이해는 이전에 생성 된 키가 여전히 이것을 허용하기 위해 목록에 저장됩니다. 사용자가 암호를 변경할 때마다 이전에 저장된 모든 데이터를 암호 해독하고 다시 암호화해야하므로 비용이 많이 드는 작업이므로 이전 키는 그대로 두십시오.

그러나 관리 도구를 사용하면 암호를 변경할 수있는 방식으로 암호를 변경하십시오.

컴퓨터 A에서 컴퓨터 B의 암호를 변경했을 때의 영향을 알지 못합니다. 로밍 프로필이이 문제를 제대로 처리 할 것으로 추측되지만 이는 잘못된 가정 일 수 있습니다.

어딘가에 백업하지 않고도 중요한 데이터를 DPAPI에 저장하지 않겠습니다. 물론 이는 데이터의 민감도에 따라 다른 보안 관련 복잡성을 도입합니다.

+0

다른 암호화 방법을 사용하는 것이 아마도 제 상황에 들어가는 방법이라고 생각합니다. 질문의 두 부분에 대한 철저한 답변을 주셔서 감사합니다. –

3

데이터 보호 API (DPAPI)는 roaming profiles에서 올바르게 작동합니다. 따라서 사용자가 네트워크를 통해 데이터를 해독 할 수 있다는 사실을 알 수 있습니다. IsolationStorage을 사용하면 여러 응용 프로그램에 적용되는 데이터를 저장하는 데 사용되며 사용자의 이름이나 라이센스 정보와 같은 특정 응용 프로그램에 연결되지 않습니다. 내 목적은`것은 RijndaelManaged 같은 것을 사용하는 것이 더 적합 할 수 있습니다 생각하고

IsolatedStorageFile isoFile = 
IsolatedStorageFile.GetStore(IsolatedStorageScope.User | 
    IsolatedStorageScope.Assembly | 
    IsolatedStorageScope.Roaming, null, null); 
+0

이 정보를 제공해 주셔서 감사합니다. 보안을 강화하기 위해 격리 된 스토리지 이외에 암호화가 사용됩니까? 또는 격리 된 저장소에서도 암호화를 제공합니까? –

+0

격리 된 저장소에 대한 액세스는 응용 프로그램의 도메인 및 어셈블리와 관련된 ID 또는 어셈블리만으로 제한됩니다. MSDN 문서를 읽으십시오. 모든 것이 잘 설명되어 있습니다. – Sievajet

관련 문제