MemGuard
غلاف برمجي لتخزين المعلومات الحساسة في الذاكرة.
تحاول هذه الحزمة تقليل احتمالية تعرض البيانات الحساسة للخطر عند وجودها في الذاكرة. تهدف إلى دعم جميع أنظمة التشغيل الرئيسية وهي مكتوبة بلغة Go نقية.
الميزات
- يتم تشفير البيانات الحساسة والمصادقة عليها في الذاكرة باستخدام XSalsa20Poly1305. المخطط المستخدم يدافع أيضًا ضد هجمات التمهيد البارد.
- تخصيص الذاكرة يتجاوز بيئة تشغيل اللغة باستخدام استدعاءات النظام لطلب الموارد من النواة مباشرة. هذا يتجنب التدخل من جامع القمامة.
- المخازن المؤقتة التي تخزن البيانات النصية العادية محصنة بصفحات حراسة وقيم إشارة للكشف عن الوصول العشوائي والتدفقات الزائدة.
- يتم بذل الجهد لمنع البيانات الحساسة من لمس القرص. يشمل ذلك قفل الذاكرة لمنع التبديل ومعالجة تفريغات النواة.
- تم تطبيق الثبات على مستوى النواة بحيث تؤدي محاولة تعديل المناطق المحمية إلى انتهاك وصول.
- توفر نقاط نهاية متعددة قدرات تطهير الجلسة وإنهاء آمن بالإضافة إلى معالجة الإشارات لمنع ترك البيانات المتبقية.
- يتم التخفيف من هجمات القنوات الجانبية من خلال التأكد من أن نسخ البيانات ومقارنتها يتم في وقت ثابت.
بعض الميزات مستوحاة من libsodium، لذا ننسب الفضل لهم.
يمكن العثور على الوثائق الكاملة ونظرة عامة شاملة لواجهة برمجة التطبيقات هنا. يمكن العثور على نماذج أكواد مثيرة للاهتمام ومفيدة ضمن الحزمة الفرعية أمثلة.
التثبيت
$ go get github.com/awnumar/memguard
واجهة برمجة التطبيقات تجريبية وقد تحتوي على تغييرات غير مستقرة. يجب تثبيت إصدار معين. [الوحدات]
المساهمة
- تقديم نماذج برامج إلى
./examples.
- الإبلاغ عن الأخطاء والثغرات وأي صعوبات في استخدام واجهة برمجة التطبيقات.
- كتابة مكتبات أمان وتشفير مفيدة تستخدم memguard.
- تنفيذ حماية خاصة بالنواة/المعالج.
- تقديم تحسينات في الأداء.
تُستخدم القضايا (Issues) للإبلاغ عن الأخطاء وللمناقشة حول الاقتراحات. يجب أن تكون طلبات السحب (Pull requests) موجهة ضد الفرع الرئيسي (master).