تشفير الوصول العشوائي مع AES في وضع العداد باستخدام Fortuna PRNG:

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

  •  12-09-2019
  •  | 
  •  

سؤال

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

حتى التشفير / فك التشفير يمكن أن تبدو مثل هذا

تشفير كتلة عند الإزاحة:

rndsubseq = AESEnc(Offset, FileUniqueKey)
xoredplaintext = plaintext xor rndsubseq
ciphertext = AESEnc(xoredplaintext, PasswordBasedKey)

فك تشفير كتلة عند الإزاحة:

rndsubseq = AESEnc(Offset, FileUniqueKey)
xoredplaintext = AESDec(ciphertext, PasswordBasedKey)
plaintext = xoredplaintext xor rndsubseq

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

تعديل:

بمعنى آخر، ما أقترحه هو استخدام Fortuna PRNG كقص واحد لتشكيل تشفير AES Tweakable مع قدرة الوصول العشوائي. قرأت عمل Liskov، Rivest و Wagner، لكن لم أتمكن من فهم ما كان الفرق الرئيسي بين تشفير في وضع التشغيل وشفرة مشددة. قالوا إنهم اقترحوا إحضار هذا النهج من المستوى العالي داخل تشفير نفسه، ولكن على سبيل المثال في حالتي Xoring النص العادي مع القرص، هل هذا قرص أم لا؟

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

المحلول

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

تم تحريره لإضافة: إعادة تحريرك: نعم، تحاول إجراء تشفير كتلة تعثر من AES عن طريق Xoring القرص مع النص أكثر ملاءمة، لديك ENC (T، K، M) = AES (K، F (T) XOR M) حيث تعني AES (K، ...) تشفير AES مع المفتاح K و F (T) هو بعض وظيفة القرص (في حالتك أعتقد أنه فورتونا). كان لدي نظرة موجزة على الورق الذي ذكرته وبقدر ما أستطيع أن أرى أنه من الممكن إظهار أن هذه الطريقة لا ليس إنتاج تشفير كتلة التعثر الآمنة. الفكرة (بناء على التعاريف من القسم 2 من Liskov، Rivest، Wagner Paper) هي كما يلي. لدينا إمكانية الوصول إلى تشفير Oracle أو التقليب العشوائي ونريد أن نقول أي واحد نتفاعل معه. يمكننا ضبط Tweak T والكتابة M ونحن نعود إلى الفم المشوي المقابل لكننا لا نعرف المفتاح الذي يستخدم. إليك كيفية معرفة ما إذا كنا نستخدم AES البناء (K، F (T) XOR M). اختر أي قيمتين مختلفة T، T '، حساب F (T)، F (T'). اختر أي رسالة م ثم حساب الرسالة الثانية ك M '= M XOR F (T) XOR F (T'). اسأل الآن تشفير Oracle لتشفير M باستخدام Tweak T و M 'باستخدام Tweak T'. إذا تعاملنا مع الإنشاءات المدروسة، فستكون النواتج متطابقة. إذا تعاملنا مع التباديلات العشوائية، فإن المخرجات ستكون بالتأكيد (مع احتمال 1-2 ^ 128) مختلفة. وهذا هو أن كلا المدخلات إلى تشفير AES سيكون هو نفسه، لذلك ستكون الطرافة المشاة متطابقة أيضا. لن يكون هذا هو الحال عندما نستخدم التباديلات العشوائية، لأن الاحتمال أن المخرجين متطابقان هو 2 ^ -128. خلاصة القول هي أن القرص Xoring إلى الإدخال ربما لا توجد طريقة آمنة.

تقدم الورقة بعض الأمثلة على ما يمكن أن يثبت أنه بناء آمن. يبدو أن أبسط واحد هو ENC (T، K، M) = AES (K، T XOR AES (K، M)). تحتاج إلى تشفير لكل كتلة، لكنها تثبت أمن هذا البناء. كما يذكرون المتغيرات بشكل أسرع، لكنهم يحتاجون إلى بدائية إضافية (عائلات الوظائف العالمية العسكرية تقريبا).

نصائح أخرى

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

مشكلة أخرى هي كيف يمكنك الاحتفاظ بآمنة FiLuniquekey؟ مشفرة بكلمة مرور؟ يتم تقديم مشاكل حفنة كاملة عند استخدام مفاتيح متعددة.

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

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