فك تشفير إجهزة الأندرويد Brute-force Full Disk Encryption

المستوى:

متوسط الى متقدم

يوفر نظام التشغيل Android خدمة الـ  Full Disk Encryption و التي تسمح للمستخدمين بتفشير البيانات المخزنة على هاتفهم المحمول بحيث انه يمنع المتطفلين من الدخول للبيانات إن كان عن طريق إستخدام الهاتف بواسطة كلمة سر او عن محاولة الوصول للـ Storage عن طريق منفذ خارجي.

جميعنا نتذكر قضية فك تشفير جهاز الـ iPhone للمشتبه به بتفجيرات سان بردينو بين الـ FBI  و شركة Apple و التي انتهت بقدرة الـ FBI على فك تشفير الهاتف بطريقة غير معلن عنها.

يبدو أن الأمر بالنسبة لأجهزة الـ Android أسهل بكثير, حيث ان الـ Full Disk Encryption كخدمة يعمل على تعمية إمكانية الوصول للملفات و منها نظام التشغيل نفسه إلى ان يقوم المستخدم بإدخال كلمة السر الحقيقية. و تدعي Qualcomm مطورة التشفير,  أن نظامها الذي طورته للتشفير قوي و مؤمن إلا ان باحث أمن المعلومات Gal Beniamini لديه رأي أخر و قد نشره في تدوينة موضحاً كيفية عمل التشفير و كيف يمكن مهاجمته1.

بحسب تصريح الباحث, يبدو انه تواصل مع شركة Qualcomm المسؤولة عن تطوير التشفير في نظم Android و على ما يبدو ان حل المشكلة لن يكون سهلاً و سيحتاج تدخلاً لتعديل مخطط سير عمل التشفير و سيكون التعديل على مستوى الـ Hardware مما يعني انه لن يكون الحل عن طريق Push updates يتم تحميلها بل يجب علينا الإنتظار لنرى الحلول التي من الممكن ان تكون شراء اجهزة جديدة و الإستغناء عن اجهزتنا الحالية.

كيف يعمل تشفير نظام التشغيل Android?

بحسب ما ورد في المستندات الرسمية على موقع نظام التشغيل الرسمي بما يخص التشفير(2), فأن Android  يستخدم نظام تشفيره المبني على dm-crypt المستخدم في نظم التشغيل Linux. يعمل الـ dm-crypt كوظيفة على مستوى الـ Kernel و التي  بإمكانها العمل على طبقة الـ Block Device و التي بإمكانها التعامل مع بقية وحدات التخزين الخارجية ايضاً و تشفيرها كـ كروت الذاكرة.

يعتمد التشفير على خوارزمية 128 AES كما ان الخوارزمية المستخدمة لتشفير المفتاح الرئيسي هي ايضاً AES 128.

عندما نقوم بتشفير جهاز معين, يقوم نظام التشغيل بتوليد مفتاح رئيسي لتشفير الجهاز لنسميه Master encryption key, يتم بواسطته تشفير و فك تشفير المعلومات على الجهاز و من ثم يتم توليد Salt-Hash خاص بالـ Master encryption Key و بعدها يتم إجراء key derivation function و التي تعني توليد مفتاح عشوائي اخر مستخرج من المفتاح الـ Master يستطيع تشفير و فك تشفير المفتاح الـ Master encryption Key بواسطة كلمة السر التي سيختارها المستخدم, و يتم تخزينه في قسم او (Block) غير مشفر على وحدة التخزين الخاصة بالهاتف.

و ستكون العملية كالتالي:

  • في هكذا نظام تشفير و فك تشفير كيف يتم الهجوم؟

هجمات الـ Brute Force تعتبر الطريقة الأكثر شيوعاً لفك تشفير هذا النوع من التشفير و الذي يعتمد على تجربة جميع الإحتمالات الممكنة من المفاتيح و التي ستؤدي لفك تشفير المحتوى المشفر.

لكي يتم منع المهاجم من تجربة كافة المفاتيح الممكنة و التي تتم عن طريق برنامج حاسوبي يجري العديد من المحاولات في الثانية الواحدة, يتم تطوير آلية لمنع المستخدم من تجربة أكثر من أحتمال و على سبيل المثال يتم قفل إمكانية محاولة فتح تشفير معين بواسطة كلمات سر في حال تجاوز المستخدم 5 محاولات لمدة 30  ثانية و التي بدورها ستمنع البرمجية الخاصة بتخمين المفاتيح من إتمام عملها او تحقيق العمل المرجو منها. و في بعض التطبيقات يتم تدمير البيانات بعد عدة محاولات.

تتم هذه العملية ضمن الـ  Running operating system مما يعني ان هنالك تطبيق معين مهمته ايقاف محاولات إدخال كلمات سر خاطئة و تدمير المعلومات بعد عدة محاولات خاطئة.

ماذا عن محاولة فك التشفير خارج إطار الـ Running operating system او الـ off-device brute-force attacks؟

تم حل هذه المشكلة عن طريق بناء Hardware-backed Keystore و التي بدورها تتعامل مع الـ Master Key و تربطه بالـ Hardware الخاص بالجهاز, و على أساسه تم إستخدام الـ Keymaster HAL في هذه العملية.

تعتبر الـ Keymaster HAL مكتبة ديناميكية من الممكن التواصل معها بواسطة  الـ Service الخاصة بتخزين المفاتيح, و التي بدورها تستطيع القيام بـ Hardware Encryption.

العملية جميعها تحصل بعيداً عن نظام التشغيل و معلومات المستخدمين, بل هي بعيدة كل البعد عن وحدات التخزين التي يستخدمها المستخدم لتشغيل هاتفه.

  • في المخطط الموضح إعلاه, نجد ان Android قام بإنشاء عالمين للعمل, الأول غير آمن و الثاني آمن. المقصود بالعالم الغير آمن, هو العالم الذي يستطيع المستخدم او المهاجم الوصول له و للعمليات التي تتم بداخله و الذي يتضمن نظام التشغيل و ملفات المستخدم , و العالم الآخر هو العالم الآمن, هو المنطقة التي لا يستطيع المهاجم الوصول إليها لكون العالم الغير آمن لا يستطيع الوصول اليها اساساً و تتم عملياتها بشكل داخلي, تم تسمية هذه العملية بـ KeyMaster module.

بمعنى آخر, في حال أراد المستخدم تشفير بيانات معينة, يقوم العالم الغير آمن بتزويد العالم الآمن بمفتاح التشفير المشفر  , و من ثم يقوم العالم الآمن بفك تشفير المفتاح  و من ثم إرساله للعالم الغير آمن, و في حال رغب المستخدم بتفعيل التشفير, يقوم العالم الغير آمن بإرسال المفتاح للعالم الآمن و من ثم بدوره يقوم بتشفيره و إعادة المفتاح مشفراً للعالم الغير آمن, اي ان مهمة الـ Master Key في العالم الآمن تتلخص بتنفيذ عملية معينة لتشفير و فك التشفير بدون كشف خوارزمية و تفاصيل العملية خارج الإطار الآمن.

و بتحليل كيف يقوم Android بتشفير و فك تشفير وحدات التخزين, قام مكتشف الثغرة Gal Beniamini بتصميم العملية و التي تتم العملية كالتالي:

كما هو موضح في المخطط, من أجل ربط عملية الـ key derivation function إلى الـ Hardware الخاص بالجهاز, يوجد حقل فارغ ملحق بالـ Crypto Footer و التي تعتبر الـ Partition الخاص بوحدة التخزين المشفرة و التي تحتوي الـ Meta data المتعلقة بالتشفير, و يتموضع هذا الحقل الفارغ الـ KeyMaster-generated key blob و التي تعتبر القسم الذي يحتوي على المفتاح الخاص المشفر و الذي يستخدم لتوقيع Sign مفتاح التشفير أثناء عمل الـ key derivation function, و هنا يتم إستخدام الـ KeyMaster module و التي بدورها ستقوم بتوليد مفتاح intermediate key يستخدم في  كل طلب فك تشفير.

بالإضافة للحقل الفارغ المتواجد في الـ Crypto Footer , يوجد حقل أخر لا علاقة له في عملية فك التشفير, و تكون قيمة هذا الحقل مستمدة من تشغيل الـ scrypt على المفتاح الآخيرintermediate key  (IK3)  و توجد في الحقل المسمى Scrypted IK في المخطط أعلاه.

مالهدف من هذا الحقل و القيمة التي يحفظها؟

في عملية التشفير و فك التشفير يعتبر التحقق من صحة المفاتيح و كلمات السر من أهم الخطوات التي لا علاقة لها في عملية التشفير و فك التشفير, بمعنى أخر و في هذا المثال في التحديد, القيمة Scrypted IK يتم إستخدامها للتحقق من صحة كلمة السر التي أدخلها المستخدم لفك تشفير وحدة التخزين, للتفريق مابين مشكلة في وحدة التخزين تعيق فك تشفيرها او إدخال كلمة سرية خاطئة.

كما هو موضح, فأن عملية ربط عملية الـ key derivation function بالـ Hardware الخاص بالجهاز قامت فعلياً  بتوقيع مفتاح intermediate key بواسطة الـ KeyMaster اي ان المفتاح (المؤقت) الذي تم توقيعه يستطيع تنفيذ ما طلب منه (فك تشفير) و تمت العملية بداخل الـ Hardware و لكن إلى اي درجة تعتبر هذه العملية محمية و أن الـ Hardware يستطيع فعلياً حماية المفاتيح؟

حاول مكتشف الثغرة البحث عن Documantation تخص العملية إلى ان المعلومات المتواجدة غير كافية كلياً لتحديد مدى قوة آمان هذه العملية, لذا عمل مكتشف الثغرة على  إجراء تحليل للسورس كود الخاص بتشفير وحدات التخزين ووصل للنتيجة التالية :

1. عملية الـ key derivation function لا تتم في الـ Hardware , بل يتم توليد مفتاح التشفير و حفظه في منطقة الـ TrustZone و يكون المفتاح مستمد فقط من الـ Hardware generator اي انه ليس كما تم وصفه أعلاه.

2. لكون المفتاح متوفر في منطقة الـ TrustZone, تستطيع الشركات المصنعة للـ Hardware تزويد المهاجم بإمكانية توقيع نسخة الـ TrustZone و التي بدورها ستسهل  عملية الـ Bruteforce لكلمة السر و إستخراج مفتاح فك التشفير.

3. حتى و إن تم إصلاح هذه الثغرة و تحديث نظام التشغيل و نظام التشفير, يستطيع المهاجم إن امتلك  Image مشفرة من وحدة التخزين على Downgrade الـ Framework الخاصة بالجهاز و محاولة فك التشفير بالطريقة الموضحة أعلاه.

المحصلة:

عملية التشفير ليست آمنة كما يوصفها الإندرويد , كما ان عملية حفظ المفاتيح لا تتم فعلياً على الـ Hardware المسؤول عن تخزين المفتاح, كما ان مهمة ال Hardware تقتصر فقط على توقيع المفاتيح ليتم إستخدامها في فك التشفير مما يجعل الإختراق الأمني اكبر خصوصاً في وجود Hardware مطور من قبل شركة معينة من الممكن ان تقوم بتزويد المهاجم بالمفاتيح المطلوبة لخرق الحماية.

مايزال مكتشف الثغرة و بعض الباحثين من العمل على إستغلال الثغرة , للإطلاع على التحديثات يرجى زيارة التدوينة الخاصة بالموضوع.

http://bits-please.blogspot.my/2016/06/extracting-qualcomms-keymaster-keys.html

—–

1- Extracting Qualcomm’s KeyMaster Keys – Breaking Android Full Disk Encryption http://bits-please.blogspot.my/2016/06/extracting-qualcomms-keymaster-keys.html

2- Android Full disk Encryption

https://source.android.com/security/encryption/

Share

Leave a Reply

Your email address will not be published. Required fields are marked *