سؤال

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

أفهم أنني بحاجة إلى تشفير هذه المعلومات. ولكن بعد ذلك ، أين أقوم بتخزين كلمة مرور التشفير بأمان؟ إنه نوع من عودة لا حصر لها ...

لذلك ، هل هناك طريقة ، لتشفير المعلومات على Windows ، وينجذ Windows بشكل آمن إدارة كلمات المرور؟ عندما أقول Windows أعني Windows XP SP2 أو لاحقًا.

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

أنا أبحث عن كل من الحلول - .NET 2.0 (C#) وحلول Native (C/C ++) لهذه المشكلة.

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

المحلول

هل هناك طريقة ، لتشفير المعلومات على Windows ، وأن يكون Windows إدارة كلمات المرور بشكل آمن؟

cryptprotectdata: http://msdn.microsoft.com/en-us/library/windows/desktop/aa380261(v=vs.85).aspx

باستخدام من .NET: http://msdn.microsoft.com/en-us/library/aa302402.aspx

تاريخيا ، التخزين المحمي (متوفر في XP ، قراءة فقط في Vista+): http://msdn.microsoft.com/en-us/library/bb432403٪28vs.85٪29.aspx

نصائح أخرى

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

قد يكون الجانب السلبي أنه لا يمكنك استرداد البيانات إذا تم حذف المستخدم/إعادة تثبيت Windows (أعتقد أن هذا هو الحال ، ليس متأكدًا تمامًا). في هذه الحالة ، قم بتشفير البيانات باستخدام مفتاح "تم إنشاؤه ذاتيًا" مشتقًا من كلمة المرور وتخزين كلمة المرور في التسجيل/الملف المشفر باستخدام DPAPI.

يمكنك استخدام مرفق التشفير الأصلي. قم بتعيين سمة Encrypt على المجلد أو الملف (من صفحة الخاصية ، انقر فوق الزر "المتقدم"). بعد ذلك ، يمكنك تعيين المستخدمين الذين يمكنهم الوصول إلى الملف (بشكل افتراضي ، يتضمن هذا فقط منشئ الملفات). الميزة الكبيرة لهذا الحل هي أنها شفافة تمامًا من التطبيق ووجهات نظر المستخدمين.

للقيام بذلك برمجيا: استخدام واجهة برمجة تطبيقات Win32 ، اتصل EncryptFile() في الدليل الذي تريد تخزين بياناتك الحساسة لكل مستخدم. من الآن فصاعدًا ، سيتم تشفير جميع الملفات التي تم إنشاؤها حديثًا داخل هذا DIR وقابلة للقراءة فقط من قبل منشئها (سيكون هذا هو المستخدم الحالي لتطبيقك). بدلاً من ذلك يمكنك استخدام FILE_ATTRIBUTE_ENCRYPTED العلم على الملفات الفردية في وقت الإنشاء. يمكنك التحقق من معلومات التشفير من Explorer على صفحة خاصية الملف ، ومعرفة أن الملفات التي تم إنشاؤها بواسطة التطبيقات مشفرة بشكل صحيح وتقتصر على مستخدميها. لا توجد كلمة مرور لتخزينها أو استخدامها ، كل شيء شفاف.

إذا كنت ترغب في إخفاء البيانات من جميع المستخدمين ، فيمكنك إنشاء مستخدم خاص خاص بتطبيق وانتحال شخصية من تطبيقك. هذا ، إلى جانب ACLS ، هو التقنية المباركة على Windows لخدمات النظام.

قد ترغب في إلقاء نظرة على التخزين المعزول ، وهو وسيلة لتخزين الإعدادات والبيانات الأخرى على بيانات لكل تطبيق تلقائيًا. انظر مثال و MSDN.

هذا بديل لتخزين الإعدادات العادية في السجل ، أفضل في الكثير من الحالات ... لست متأكدًا لتكون متاحة ، حتى مشفرة ، للمستخدمين الآخرين. من الذاكرة فقط التطبيق. أن خلق التخزين يمكن أن يفتحه - ولكن يحتاج إلى التحقق.

يحرر:

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

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

أوصيك بإلقاء نظرة على كتلة تطبيق تشفير مكتبة المؤسسة. افحص هذا مشاركة مدونة. يحتوي Windows على واجهة برمجة تطبيقات حماية البيانات المدمجة لتشفير البيانات ، لكن كتلة تطبيق التشفير تجعلها أكثر وضوحًا.

أم ، ما تحاول تحقيقه هو بالضبط ما حاول DRM تحقيقه. قم بتشفير شيء ما ثم أعط المستخدم المفاتيح (مهما كانت محددة) والتشفير. لقد فعلوا ذلك مع أقراص DVD. لقد فعلوا ذلك مع Blu-ray. لقد فعلوا ذلك مع iTunes.

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

إذا كان كل ما تفعله هو تشفير بيانات المستخدم ، فاطلب من المستخدم كلمة المرور الخاصة بهم. إذا كنت تحاول حماية بياناتك الداخلية من المستخدم الذي يقوم بتشغيل التطبيق ، فأنت سول

ERM HASH كلمة المرور؟ لا تحتاج إلى تخزين الصفقة الحقيقية في أي مكان على الجهاز مجرد كلمة مرور التجزئة (ربما مملحة أيضًا). ثم عندما يدخل المستخدم كلمة مروره ، فإنك تقوم بنفس العملية على ذلك ومقارنتها بالذات التي قمت بتخزينها على القرص.

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