データ保護 API (DPAPI) はまさにあなたが望むことを行います。暗号化キーとして、マシンまたは (より良い) ユーザーの資格情報を使用して、任意のデータの対称暗号化を提供します。キーの管理について心配する必要はありません。Windows がそれを処理します。ユーザーがパスワードを変更すると、Windows はユーザーの新しいパスワードを使用してデータを再暗号化します。
DPAPI は、System.Security.Cryptography.ProtectedData クラスを使用して .NET で公開されます。
byte[] plaintextBytes = GetDataToProtect();
byte[] encodedBytes = ProtectedData.Protect(plaintextBytes, null, DataProtectionScope.CurrentUser);
Protect メソッドの 2 番目のパラメーターは、オプションのエントロピー バイト配列で、追加のアプリケーション固有の "シークレット" として使用できます。
復号化するには、ProtectedData.Unprotect 呼び出しを使用します。
byte[] encodedBytes = GetDataToUnprotect();
byte[] plaintextBytes = ProtectedData.Unprotect(encodedBytes, null, DataProtectionScope.CurrentUser);
DPAPI はローミング プロファイル (ここで説明されているように) で正しく動作しますが、さまざまなマシンがアクセスできる場所 (ネットワーク共有、IsolatedStorageScope.Roaming を使用したIsolatedStorageなど) に暗号化されたデータを格納する必要があります。
詳細については、MSDN の ProtectedData クラスを参照してください。ここにDPAPI ホワイト ペーパーがあり、必要以上の情報が含まれています。