التخزين المستمر للبيانات المشفرة باستخدام صافي

StackOverflow https://stackoverflow.com/questions/154430

  •  03-07-2019
  •  | 
  •  

سؤال

وأحتاج لتخزين البيانات المشفرة (سلاسل قليلة صغيرة) بين تشغيل التطبيق. أنا لا أريد المستخدم لتوفير مرور في كل مرة (ق) وقال انه يقوم بتشغيل التطبيق. بمعنى آخر. بعد كل ما تنخفض إلى تخزين آمن مفتاح التشفير (ق).

وكنت أبحث في RSACryptoServiceProvider واستخدام PersistentKeyInCsp، ولكن لست متأكدا كيف يعمل. هي الحاوية الرئيسية المستمرة بين تشغيل التطبيق أو إعادة تشغيل الجهاز؟ إذا كانت الإجابة بنعم، هل هو مستخدم معين أو جهاز معين. بمعنى آخر. إذا كنت تخزين البيانات المشفرة بلدي في التشكيل الجانبي المتجول المستخدم، يمكنني فك تشفير البيانات في حالة تسجيل دخول المستخدم على جهاز آخر؟

وإذا كان ما سبق لا يعمل، ما هي خياراتي (ولست بحاجة للتعامل مع التشكيلات التجوال).

هل كانت مفيدة؟

المحلول

ووAPI حماية البيانات (DPAPI) يفعل بالضبط ما تريد. ويوفر تشفير متماثل من البيانات العشوائية، وذلك باستخدام وثائق تفويض الجهاز أو (أفضل) للمستخدم، ومفتاح التشفير. لم يكن لديك ما يدعو للقلق حول إدارة المفاتيح. يأخذ نوافذ الرعاية من ذلك بالنسبة لك. إذا قام المستخدم بتغيير كلمة السر الخاصة به، ويندوز إعادة تشفير البيانات باستخدام كلمة المرور الخاصة بالمستخدم جديدة.

ويتعرض DPAPI في. NET مع الطبقة System.Security.Cryptography.ProtectedData:

byte[] plaintextBytes = GetDataToProtect();
byte[] encodedBytes = ProtectedData.Protect(plaintextBytes, null, DataProtectionScope.CurrentUser);

والمعلمة الثانية من أسلوب حماية هو اختياري مجموعة الكون بايت، والتي يمكن استخدامها ك "سرية" بالتطبيق إضافية.

لفك تشفير، استخدم دعوة ProtectedData.Unprotect:

byte[] encodedBytes = GetDataToUnprotect();
byte[] plaintextBytes = ProtectedData.Unprotect(encodedBytes, null, DataProtectionScope.CurrentUser);

وDPAPI يعمل بشكل صحيح مع التشكيلات الجانبية المتجولة (كما هو موضح هنا )، على الرغم من أنك سوف تحتاج إلى تخزين البيانات المشفرة في مكان (حصة الشبكة، IsolatedStorage مع IsolatedStorageScope .Roaming ، وما إلى ذلك) أن مختلف الآلات الخاصة بك يمكن الوصول إليها.

واطلع على الطبقة ProtectedData في MSDN لمزيد من المعلومات. هناك DPAPI ورقة بيضاء href="http://msdn.microsoft.com/en-us/library/ms995355.aspx" هنا ، مع مزيد من المعلومات مما كنت من أي وقت مضى تريد.

نصائح أخرى

وأود أن أضيف إلى نهج DPAPI.

وعلى الرغم من أنني لم تنفذ إلى مخزن المستخدم نهج نفسي، هناك وثائق Microsoft لنهج المستخدم مخزن الذي يشفر ويفك شفرة البيانات لمستخدم معين.

ولقد استخدمت DPAPI استخدام مخزن الجهاز. أنا أصف ذلك في حالة تناسبها مع ما كنت تبحث القيام به. أنا استخدم خدمة Windows لتحميل ملف تعريف مستخدم ويندوز، ويستخدم كلمة المرور الخاصة بالمستخدم لتشفير البيانات.

وكملاحظة جانبية، DPAPI يستخدم الثلاثي DES التي قد تكون أضعف قليلا (من AES)، ولكن بعد ذلك لست متأكدا أي نوع من الحماية التي تبحث عنها.

وحماية البيانات ويندوز http://msdn.microsoft.com/en-us/library/ms995355. ASPX

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top