سؤال

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

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

أنا أبحث في استخدام بيثون للتطور السريع من قطعة أخرى من البرامج. لتكرار وظائف التشفير لهزيمة / تثبيط البيانات عن البيانات، وأفضل فكرة عنها حتى الآن هي مجرد استخدام ctypes مع DLL لعمليات قراءة / كتابة الملفات، بحيث تكون طريقة التشفير وفك التشفير "بشكل كاف".

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

ماذا سيكون أفضل نهج لتحقيق وسيلة سعيدة للتشفير أو غيرها من إثبات تكامل البيانات باستخدام بيثون؟ لقد رأيت وظيفة أخرى نتحدث عن توليد "توقيع مثالي للعبث"، ولكن إذا تم إنشاء توقيع في بيثون نقي، فسيكون ذلك تافيا لتوليد توقيع لأي بيانات تعسفية. نحن ربما تكون قادرة على الهاتف المنزل لإثبات سلامة البيانات، ولكن هذا يبدو وكأنه إزعاج كبير للجميع المعنيين.

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

المحلول

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

حساب قيمة تجزئة عبر البيانات الخاصة بك وإما تخزين قيمة التجزئة في مكان تعرفه أنه لا يمكن العبث به أو توقيعه رقميا.

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

نصائح أخرى

إذا كنت تضمين كلمات المرور في مكان ما، فأنت تم تهيئها بالفعل. لا يمكنك ضمان أي شيء.

ومع ذلك، يمكنك استخدام تشفير المفتاح العام / مفتاح خاص للتأكد من أن البيانات لم يتم العبث بها.

هكذا تعمل:

  1. يمكنك إنشاء زوج رئيسي للمفتاح العام / الخاص.
  2. احتفظ بمفتاح خاص آمن، وتوزيع المفتاح العمومي.
  3. هاش البيانات ثم توقيع التجزئة مع المفتاح الخاص.
  4. استخدم المفتاح العمومي للتحقق من التجزئة.

هذا يجعل البيانات بشكل فعال للقراءة فقط خارج شركتك فقط، ويوفر برنامجك طريقة بسيطة للتحقق من عدم تعديل البيانات دون توزيع كلمات المرور.

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

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

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

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