هل يعمل تشفير AES (128 أو 256) على توسيع البيانات؟إذا كان الأمر كذلك، كم؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

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

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

المحلول

AES لا يقوم بتوسيع البيانات.علاوة على ذلك، لن يكون الناتج قابلاً للضغط بشكل عام؛إذا كنت تنوي ضغط بياناتك، فافعل ذلك قبل تشفيرها.

ومع ذلك، لاحظ أنه عادةً ما يتم دمج تشفير AES مع حشوة, ، أيّ سوف زيادة حجم البيانات (ولو ببضعة بايت فقط).

نصائح أخرى

لا يقوم AES بتوسيع البيانات، باستثناء بضع بايتات من الحشو في نهاية الكتلة الأخيرة.

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

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

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

يقوم AES بتحويل كتل الإدخال ذات 16 بايت إلى كتل إخراج ذات 16 بايت.التوسيع الوحيد هو تقريب البيانات إلى عدد صحيح من الكتل.

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

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

إذا كان الضغط ضروريًا، فقم بذلك قبل التشفير.

لا.سيكون التغيير الوحيد هو مقدار صغير من الحشو لمحاذاة البيانات مع حجم الكتلة

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

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

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