سؤال

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

باستخدام C ++ هل هناك طريقة (منصة مستقلة) تسمح بوجود ملف موجود فقط في ذاكرة الوصول العشوائي؟ أرغب في تجنب استخدام طريقة قرص RAM إذا أمكن ذلك.

شكرا

تحرير: شكرا، إنه أكثر من مجرد شيء تعليمي بالنسبة لي، أنا جديد على التشفير والتعمل فقط من خلال طرق مختلفة، لا أخطط بالفعل باستخدام العديد منهم (OTP ESSPecialy بسبب مضاعفة حجم الملف الأصلي بسبب "ضمادة").

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

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

المحلول

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

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

على أنظمة Posix (مثل BSD، Linux) يمكنك استخدامها mlock() لقفل الذاكرة في ذاكرة الوصول العشوائي.

نصائح أخرى

ليس حقا ما لم تكن تحسب تدفقات الذاكرة (مثل stringstream).

لا بشكل خاص وتحديدا لأغراض أمنية: يمكن تبديل أي قطعة من البيانات على القرص على أنظمة الذاكرة الظاهرية.

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

قد ترغب في النظر في TrueCrypt.شفرة المصدر المصدر. قد يكون الحصول على رمز على مستوى نظام الملفات أفضل رهان.

OTP هي طريقة تشفير فظيعة للملفات التعسفية، إلا إذا كان لديك كمية هائلة من الانتروبيا التي يمكنك ضمان لا تكرر نفسه أبدا (لهذا السبب يطلق عليه "لمرة واحدة"!)

إذا كنت ترغب في إنشاء كائن يشبه الملفات الموجودة فقط في الذاكرة ولا تهتم بنظام Windows، فأنا ننظر إلى كتابة نظام ملفات Fuse مخصص (http://fuse.sourceforge.net/) بهذه الطريقة تضمن ما هي وسوف يتم كتابتها ولن يتم كتابتها على القرص، ويمكن الوصول إلى ملفاتك من خلال جميع البرامج.

باستخدام واحد من std::stringstream أو fmemopen سيحصل عليك الوصول إليك إلى كتل من الذاكرة. إذا (للأمان) تريد تجنبه قيد التشغيل، واستخدام mlock والتي ربما تكون أسهل لاستخدامها مع fmemopenمخزن مؤقت من std::stringstream. وبعد الجمع بين mlock مع std::stringstream ربما تحتاج إلى القيام به عبر مخصص مخصص (يستخدم كمعلمة قالب).

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