2015-01-05 13 views
5

私は、作業中のアプリケーションに重要なデータを保存することを検討しています。私はマイクロソフトが提供する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 

は、タブレット上のユーザーAへのアクセスabc.txtですか?

第2に、ユーザーがパスワードを変更するとどうなりますか?それで、暗号化キーが違うように思えますし、以前の暗号化キーを使用していたデータの復号化がもはや回復できなくなるのではないでしょうか?

例:

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 

はもうユーザーAへのアクセスabc.txtです??

+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を正常に動作させるには

」それは移動プロファイルを使用する場合、ドメインユーザーは のみドメイン内の単一のコンピュータにログオンする必要があります。ユーザがある別のコンピュータに ログにしたい場合ユーザーが第2のコンピュータにログオンする前に、 最初のコンピュータからログオフする必要があります。 ユーザーが複数のコンピュータに同時にログオンしている場合、DPAPIは既存の暗号化を復号できない可能性があります。 データを正しく。 - http://support.microsoft.com/kb/309408

ユーザAはabc.txtにアクセスできますか? 1台のマシンで、パスワードを変更した後でも、ユーザーは以前に暗号化されたファイルにアクセスできるはずです。私の理解は以前に生成されたキーはこれを可能にするためにまだリストに格納されています。 (ユーザーがパスワードを変更するたびに以前に保存されたすべてのデータを復号化して再暗号化しなければならないため、古い鍵をそのまま使用するだけです)。

ただし、管理ツールを使用すると、これを破る可能性のある方法でパスワードを変更してください。

マシン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、またはアセンブリのみに関連したIDによっても制限されます。 MSDNドキュメントをお読みください。それはすべて非常にうまく説明されている – Sievajet

関連する問題