تشفير غير مؤلم: تعليمات جديدة قياسية للتشفير المتقدم من Intel (AES-NI). استخدام تعليمات تشفير Intel® AES الجديدة في Android

10.07.2019

إن الشعبية التي لا يمكن إنكارها لأجهزة الكمبيوتر الشخصية تشجع المطورين على جعلها أكثر كمالا. يعد تشفير البيانات جزءًا مهمًا من استخدام برامج المراسلة الفورية والشبكات الاجتماعية وأنواع أخرى من اتصالات الإنترنت. وبدونها، تكون جميع معلوماتك متاحة لأي شخص على الشبكة، ومن أي مكان. تعد أوامر تشفير AES-NI من Intel تحسينًا لخوارزمية معيار التشفير المتقدم. تُستخدم هذه التعليمات في معالجات خادم Intel Xeon ومعالجات Intel Core المكتبية/الاحترافية. إذا كنت تتساءل " شركة انتل الخدمات المعمارية والهندسيةنيما هو عليه في السير"، فإن هذه المقالة ستكون مفيدة لك أكثر من أي وقت مضى.

لماذا تفعيلها؟

تركز Intel AES-NI على المهام التالية:

  • حماية المعاملات على الإنترنت والشبكات الداخلية؛
  • تشفير القرص (عند استخدام Microsoft BitLocker، على سبيل المثال)؛
  • تشفير بعض أجزاء المعاملات المحمية بالفعل (التشفير على مستوى التطبيق).

ونتيجة لذلك، يتم تشفير وسائط التخزين بشكل أسرع، كما يمكن رؤيته في مثال برنامج PGPdisk. يعد التشفير في وضع CBC/256 مع تمكين تعليمات AES-NI أكثر كفاءة بنسبة 20% مقارنة بدونها. تم إجراء الاختبار على ملف بحجم 351 ميغابايت. ومن الجدير بالذكر أيضًا أن سرعة فك التشفير في CBC/256 باستخدام AES-NI - تبلغ الزيادة تسعة بالمائة.

كيفية تمكين الميزة في BIOS

يتم ذلك من خلال بضع ضغطات على لوحة المفاتيح. تذكر أن AES-NI يعمل فقط على معالجات Intel. من المفيد أيضًا التحقق من دعم وحدة المعالجة المركزية لديك لهذه التقنية على الموقع الرسمي للشركة المصنعة. تعليمات للتشغيل:

  1. بعد تشغيل الكمبيوتر، نظام الإدخال / الإخراج الأساسي.
  2. انتقل إلى علامة التبويب "خيارات متقدمة". ابحث فيه عن السطر "Intel AES-NI" وقم بتعيين القيمة على "ممكّن".
  3. احفظ الإعدادات المطبقة وانتظر حتى يتم تحميل نظام التشغيل.

تمكين الخيار

خاتمة

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

تم نشر التفاصيل: 25/04/2016 الساعة 13:10

قمنا بتجميع ثنائيات Windows الخاصة بـ HodlMiner المحسّن من Wolf0 مع دعم مجموعة تعليمات AES-NI ( مصدر). يعد إصدار المُعدن هذا أسرع من إصدار HodlMiner القياسي للمعالجات التي تدعم تعليمات AES-NI. يرجى ملاحظة أن الثنائيات المجمعة المتوفرة على الرابط أدناه ستعمل فقط على نظام التشغيل Windows 64 بت وفقط على الأنظمة التي تحتوي على معالجات AMD وIntel المتوافقة مع مجموعة تعليمات AES-NI. إذا كانت وحدة المعالجة المركزية لديك لا تدعم AES-NI، فاستخدمها الإصدار القياسي من HodlMiner.

إذا لم تكن متأكدًا مما إذا كان المعالج الخاص بك يدعم مجموعة التعليمات الخدمات المعمارية والهندسية-NI، يمكنك التحقق من ذلك بسهولة باستخدام أداة مساعدة مجانية وحدة المعالجة المركزية-Z. يبدأ دعم مجموعة تعليمات AES-NI على معالجات Intel بالنماذج الأولى من معمارية Westmere الدقيقة، والتي بدأ إنتاجها في أوائل عام 2010. بينما جاء دعم AES-NI لمعالجات AMD مع أول طرازات AMD Bulldozer Family 15h، والتي تم طرحها للبيع في نهاية عام 2011. هذا يعني أنه إذا تم إصدار المعالج الخاص بك بعد عام 2011، فمن المرجح أن يدعم AES-NI. ضع في اعتبارك أن معالجات الميزانية ليست كلها تدعم تعليمات AES-NI. يمكنك العثور على قائمة بجميع معالجات Intel التي تدعم AES-NI على هذا الرابط.

يحتوي الأرشيف، الذي يمكن تنزيله من الرابط أدناه، على العديد من الملفات القابلة للتنفيذ التي تم تجميعها لمختلف بنيات وحدة المعالجة المركزية مع دعم AES-NI. يجب أن تجد .إملف تنفيذىالملف المناسب للمعالج الخاص بك وقم ببساطة بإعادة تسميته إلى hodlminer.exe. الملفات القابلة للتنفيذ bdver1 وbdver2 وbdver3مصممة لبنية AMD CPU Bulldozer أو معماريات AMD CPU الأحدث. الثنائيات المتبقية مخصصة لوحدات المعالجة المركزية المختلفة من Intel، بدءًا من ويستمير، ثم جسر ساندي، جسر آيفي، هاسويلوالنهاية برودويل. بنيان سيلفرمونتلمعالجات Atom وCeleron وPentium الضعيفة، والتي تستخدم في SoCs (الأنظمة الموجودة على الشريحة) وتدعم أيضًا AES-NI.

تضيف Intel Westmere مقاس 32 نانومتر دعم تسريع AES: هل هذا ضروري حقًا؟

اليوم، يعد الأمن موضوعًا مهمًا - ولكنه يعتبر مهمًا بشكل أساسي فقط من قبل المتخصصين. ومع ذلك، إذا أصبح الأمان عنصرًا تسويقيًا أو تحول إلى خاصية أداء، فإن شركات مثل Intel تبدأ في الترويج له بنشاط. AES أو معيار التشفير المتقدم معتمد من قبل إدارة الأمن القومي الأمريكية (NSA) والحكومة الأمريكية، بالإضافة إلى العديد من السلطات الأخرى. يعد الجيل ثنائي المقبس 32 نانومتر من معالجات Intel بتحسينات كبيرة في أداء التشفير وفك التشفير AES بفضل التعليمات الجديدة (معالجات Core i5 ثنائية النواة فقط). قررنا تقييم الفوائد في الحياة الواقعية ومقارنة معالج Core i5-661 ثنائي النواة بتعليمات AES الجديدة مع معالج Core i7-870 رباعي النواة الذي لا يدعم تسريع التشفير.

انقر على الصورة للتكبير.

يتم استخدام التشفير في الواقع بشكل مكثف أكثر مما يلاحظه المستخدمون عادةً. يبدأ الأمر كله بالمواقع الموجودة على الإنترنت والتي تحتوي على معلومات حساسة، مثل البيانات الشخصية للمستخدمين، أو المواقع التي تحتوي على معلومات المعاملات الحساسة، والتي تستخدم جميعها تشفير TLS أو SSL. يمكن أيضًا حماية خدمات مثل VoIP والمراسلة الفورية والبريد الإلكتروني بنفس الطريقة. تعد الشبكات الافتراضية الخاصة (VPN) مثالاً آخر ربما يحظى بشعبية كبيرة. يؤثر التشفير أيضًا على المجالات الحساسة مثل المدفوعات الإلكترونية. ومع ذلك، فإن TLS/SSL عبارة عن بروتوكولات اتصال مشفرة، أما AES، الذي تعمل إنتل على تسريعه بدءًا من الجيل الجديد من المعالجات 32 نانومتر، فهو معيار تشفير للأغراض العامة. ويمكن استخدامه لتشفير الملفات الفردية وحاويات البيانات والمحفوظات، أو حتى تشفير الأقسام ومحركات الأقراص بأكملها - سواء كان ذلك محرك أقراص USB أو محرك أقراص ثابت للنظام. يمكن تنفيذ AES في البرامج، ولكن هناك أيضًا منتجات تسريع الأجهزة، نظرًا لأن التشفير وفك التشفير يشكلان عبئًا حسابيًا كبيرًا. يمكن لحلول مثل TrueCrypt أو Microsoft BitLocker، والتي تعد جزءًا من نظام التشغيل Windows Vista أو Windows 7 Ultimate، تشفير الأقسام بأكملها بسرعة.

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

هناك شيء واحد مؤكد: من الأفضل توخي الحذر والحكمة بدلاً من العكس - خاصة وأن هذا لا يتطلب الكثير من الجهد. لا يغطي أسلوب Intel في إضافة تسريع AES جميع تطبيقات وسيناريوهات التشفير، بل يغطي فقط المعيار الأكثر شيوعًا — وستحصل عليه مجانًا على جميع معالجات سطح المكتب مقاس 32 نانومتر المستقبلية للطرف السائد أو الأعلى. ولكن هل توفر تعليمات AES الجديدة بالفعل مكاسب كبيرة في الأداء في سيناريوهات التشفير النموذجية، أم أنها مجرد جهد تسويقي؟ دعونا نلقي نظرة.

ما هو الخدمات المعمارية والهندسية؟

يرمز AES إلى "معيار التشفير المتقدم" وهو معيار التشفير المتماثل الأكثر شيوعًا في عالم تكنولوجيا المعلومات. يعمل المعيار مع كتل 128 بت ويدعم مفاتيح 128 أو 192 أو 256 بت (AES-128 وAES-192 وAES-256). العديد من أدوات التشفير المساعدة، بما في ذلك TrueCrypt، دعمت خوارزمية AES في بداية وجودها. ولكن العامل الأكبر في نجاح AES، بطبيعة الحال، هو اعتمادها من قبل حكومة الولايات المتحدة في عام 2002، حيث تم اعتمادها كمعيار لحماية البيانات السرية في عام 2003.

تشفير البيانات باستخدام AES

يعتمد تشفير AES على نظام استبدال التقليب، مما يعني أنه يتم تنفيذ سلسلة من العمليات الحسابية على البيانات لإنشاء مجموعة بيانات معدلة (مشفرة) بشكل كبير. المعلومات الأولية هي نص، والمفتاح هو المسؤول عن إجراء العمليات الحسابية. يمكن أن تكون العمليات بسيطة مثل تحويل البت أو XOR، أو أكثر تعقيدًا. يمكن فك تشفير تمريرة واحدة بسهولة، وهذا هو السبب في أن جميع خوارزميات التشفير الحديثة مبنية على تمريرات متعددة. في حالة AES، يكون هذا 10 أو 12 أو 14 تمريرة لـ AES-128 أو AES-192 أو AES-256. بالمناسبة، تمر مفاتيح AES بنفس الإجراء الذي تتبعه بيانات المستخدم، أي أنها عبارة عن مفتاح مستدير متغير.

تعمل العملية مع مصفوفات 4 × 4 من البايتات المفردة، والتي تسمى أيضًا الصناديق: تُستخدم صناديق S للبدائل، وتستخدم صناديق P للتباديل. يتم تنفيذ الاستبدالات والتباديل في مراحل مختلفة: تعمل الاستبدالات ضمن ما يسمى بالصناديق، وتقوم التبديلات بتغيير المعلومات بين الصناديق. يعمل S-box على مبدأ معقد، أي أنه حتى لو تغيرت بتة إدخال واحدة، فإن ذلك سيؤثر على عدة بتات إخراج، أي أن خصائص كل بتة إخراج تعتمد على كل بتة إدخال.

يوفر استخدام تمريرات متعددة مستوى جيدًا من التشفير، ولكن يجب أن يفي بمعايير الانتشار والارتباك. يتم تنفيذ التشتت من خلال مجموعة متتالية من تحويلات S-box وP-box: عند تغيير بت واحد فقط في نص الإدخال، سيقوم S-box بتعديل إخراج عدة بتات، وسوف يقوم P-box بنشر هذا بشكل عشوائي زائف التأثير عبر صناديق S متعددة. عندما نقول أن الحد الأدنى من التغيير في المدخلات يؤدي إلى الحد الأقصى من التغيير في المخرجات، فإننا نتحدث عن تأثير كرة الثلج.

ما مدى أمان تشفير AES؟

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

بالطبع، كل هذا ليس بهذه السهولة، لأنك تحتاج إلى الوصول إلى جهاز الكمبيوتر، والوصول الكامل الكافي لتحليل التشفير والحق في تنفيذ التعليمات البرمجية. ربما تفهم الآن سبب ضرورة إغلاق "الثغرات" الموجودة في نظام الأمان، والتي تسمح للمهاجم بالحصول على مثل هذه الحقوق، في أسرع وقت ممكن، حتى لو بدت سخيفة تمامًا. ولكن دعونا لا نضيع في التفكير: إذا تمكنت من الوصول إلى الكمبيوتر المستهدف، فإن استرداد مفتاح AES هو مسألة وقت، أي أنها لم تعد مهمة تستغرق وقتًا طويلاً لأجهزة الكمبيوتر العملاقة، وتتطلب موارد حوسبة ضخمة.

AES داخل إنتل

عند هذه النقطة، بدأت تعليمات AES المدمجة في وحدة المعالجة المركزية تصبح منطقية، بغض النظر عن فوائد الأداء المحتملة. من منظور أمني، يمكن للمعالج معالجة تعليمات AES في نموذج مغلف، مما يعني أنه لا يتطلب أيًا من جداول البحث اللازمة لهجوم القناة الجانبية.



محتوى

يا شباب هدية للجميع . نحن نتحدث عن شيء مثل Intel AES-NI، ويمكن العثور عليه في BIOS، ولكن ما هو؟ سنكتشف. وهكذا وجدت موقع Intel الرسمي، حيث مكتوب أن Intel AES-NI عبارة عن مجموعة معينة من أوامر التشفير التي تكمل خوارزمية معيار التشفير المتقدم (AES) وتسرع عملية تشفير البيانات في Intel Xeon (هذه هي الخادم ) ومعالجات Intel Core (المنزلية العادية).

يتضمن Intel AES-NI سبعة أوامر جديدة ويتيح لك حماية نوع البيانات بمستوى أعلى من الأمان. من حيث المبدأ، كل شيء واضح، Intel AES-NI هو نوع من التشفير الجديد، ولكن لماذا يحتاجه شخص عادي؟ سأحاول معرفة ذلك...

نعم، أي أن AES-NI ينفذ بعض جوانب AES على مستوى الأجهزة، أي في العملية نفسها. حسنا، الآن أفهم قليلا. أي أن AES-NI يعمل على تحسين أداء AES وتسريع الكتابة. يجب أن يتم تشفيره بشكل أسرع، الشيء الوحيد الذي لا أفهمه هو ما هو المشفر؟ هل القرص في نظام التشغيل Windows مشفر أم سيتم إنشاء أرشيف WinRAR بشكل أسرع؟ وهذا ما لا أستطيع أن أفهمه بعد. ولكنني وجدت بعض التوضيح حول هذه المسألة، ألقِ نظرة:

وهذا يعني أن تشفير BitLocker يجب أن يكون أسرع. لكن فيما يتعلق بالمعاملات على الإنترنت، فأنا لا أفهم ذلك تمامًا، فهل يعني ذلك أن المعالج يمكنه المشاركة في تشفير اتصالات الإنترنت؟ ونظرًا لأن عملية المعاملة بأكملها عادةً ما تكون مشفرة، فإنه يتم استخدام بروتوكول HTTPS لهذا الغرض...

باختصار يا شباب، أعتقد أنني أفهم كل شيء. هناك شيء مثل AES، أليس كذلك؟ ما هذا؟ هذه خوارزمية تشفير كتلة متماثلة، باختصار، هراء. ولكن هذا ليس نقطة. أفهم أن AES يستخدم في بعض البرامج، هل هذا منطقي؟ ها أنت ذا. لكن خيار Intel AES-NI يعمل فقط على تسريع خوارزمية AES، هل تعلم؟ لأن هذا الخيار يعمل على مستوى الأجهزة مباشرة في العملية.

ثم السؤال هو ما إذا كان الأمر يستحق تشغيل Intel AES-NI حتى يتم تشفير شيء ما بشكل أسرع؟ نعم، اتضح أن هذا هو الحال بالضبط. قرأت أيضًا أن برامج تشفير القرص يمكنها استخدام Intel AES-NI، على سبيل المثال أحد هذه البرامج هو PGPdisk.

يا شباب، لقد وجدت صورة مثيرة جدًا للاهتمام توضح ميزة استخدام AES-NI، انظروا:

والحقيقة أن الفرق ملحوظ..

إذًا، ما هو الاستنتاج الذي يمكننا استخلاصه؟ Intel AES-NI هو نوع من الأشياء المضمنة في المعالج نفسه، في الواقع، هذه بعض التعليمات، وهذه التعليمات تساعد خوارزمية AES على العمل بشكل أسرع. يمكن استخدام الخوارزمية نفسها بواسطة برامج مختلفة، وبمساعدة Intel AES-NI، ستقوم هذه البرامج بعملها بشكل أسرع =)

حسنًا يا رفاق، هذا هو عنصر Intel AES-NI الموجود في BIOS:

يا رفاق، لقد اكتشفنا الآن ما هو Intel AES-NI، ولكن إذا كان هناك خطأ ما، فلا توبيخه كثيرًا. حظا سعيدا لك وربما تكون سعيدا!

نحن نترجم... ترجمة الصينية (المبسطة) الصينية (التقليدية) الإنجليزية الفرنسية الألمانية الإيطالية البرتغالية الروسية الإسبانية التركية

لسوء الحظ، لا يمكننا ترجمة هذه المعلومات الآن - يرجى المحاولة مرة أخرى لاحقًا.

مقدمة

توضح هذه المقالة دعم تعليمات التشفير القياسية الجديدة Intel® AES (Intel® AES-NI) في Android: ما هي وكيفية استخدامها وكيفية قياس الأداء. كما يصف أيضًا نموذج الاستخدام والأمثلة بالإضافة إلى سيناريوهين للتشفير يوضحان استخدام تعليمات Intel AES-NI. يمكن للمطورين ذوي الخبرة تخطي الأجزاء الأربعة الأولى من هذه المقالة والانتقال مباشرة إلى الجزء الأخير للتعرف على حالات الاستخدام. قد يرغب المطورون الأقل خبرة في قراءة المقالة بأكملها.

تعليمات تشفير AES الجديدة (Intel AES-NI)

تم اقتراح تعليمات Intel AES-NI في مارس 2008 كامتداد لمجموعة تعليمات الهندسة المعمارية x86 لمعالجات Intel وAMD الدقيقة. الغرض من مجموعة التعليمات هذه هو زيادة سرعة التطبيقات التي تقوم بتشفير وفك تشفير البيانات AES.

يتم سرد تعليمات Intel AES-NI في الجدول 1.

الجدول 1.تعليمات Intel® AES-NI

التحقق من دعم Intel AES-NI في Android

يمكنك التحقق مما إذا كان Intel AES-NI مدعومًا على نظام أساسي معين باستخدام CPUID; تحقق من القيمة CPUID.01H:ECX.AESNI = 1. يمكنك أيضًا استخدام الوظيفة check_for_aes_instructionsمن عينة مكتبة Intel AES-NI.

استخدام Intel AES-NI في Android

يمكنك استخدام Intel AES-NI في Android بطرق مختلفة:

  • اكتب كود C/C++ واستخدم رمز التجميع مباشرة
  • استخدام مكتبة طرف ثالث موجودة، مثل OpenSSL*
  • استخدم Java* Crypto API من Android Kitkat

لتجميع مكتبة/تطبيق أصلي لنظام التشغيل x86 على نظام التشغيل Android، تحتاج إلى إعداد سلسلة أدوات مستقلة باستخدام الأمر make-standalone-toolchain.shفي أندرويد NDK:

$NDK_PATH/build/tools/make-standalone-toolchain.sh –install-dir=$STANDALONE_TOOCHAIN_PATH –toolchain=x86-4.8 –platform=android-14 –ndk-dir=$NDK_PATH تصدير PATH=$PATH:$STANDALONE_TOOCHAIN_PATH

باستخدام مكتبة البناء

المكتبة موجودة في المجلد intel_aes_lib. ويمكن أيضًا تنزيله من . استخدم الإصدار 4.4 من مجلس التعاون الخليجي أو الأحدث، أي أن إصدار NDK يجب أن يكون أحدث من NDK v3. (هنا نستخدم الروبوت-ndk-r9للاختبار.)

makefile/shellلا يوجد برنامج نصي لإنشاء إصدارات لنظام Android. لتجميع، يمكنك تغيير الملف mk_lnx86.sh. التغيير الرئيسي هو الاستخدام $STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gccبدلاً من دول مجلس التعاون الخليجي بشكل افتراضي. يجب عليك أيضًا استخدام المعلمات تمرير –D__ANDROID__.

تصدير CC=”$STANDALONE_TOOLCHAIN_PATH/bin/i686-linux-android-gcc –D__ANDROID__ --sysroot=$STANDALONE_TOOLCHAIN_PATH/sysroot -I$STANDALONE_TOOLCHAIN_PATH/sysroot/include”

بمجرد تجميعه، يمكنك نقل البرنامج الثنائي القابل للتنفيذ إلى Android واختباره. يمكنك أيضًا استخدام الكود المصدري مباشرة في تطبيقاتك أو استخدام المكتبة الثنائية التي تم إنشاؤها في NDK.

باستخدام OpenSSL

يتم استخدام تعليمات Intel AES-NI بواسطة العديد من المكتبات، مثل التشفير ++ القطبية SSL IPP OpenSSLو اخرين. (نحن نستخدم OpenSSLكمرجع - تعليمات Intel AES-NI مدعومة في OpenSSL من الإصدار التجريبي 1.0).

بدءًا من Android 4.3، يتمتع OpenSSL في AOSP بدعم Intel AES-NI، لذلك تحتاج فقط إلى تجميع التعليمات البرمجية بالتكوين المطلوب. يمكنك أيضًا تنزيله من الموقع الرسمي وتجميعه بنفسك ثم استخدام الملف *.أ/*.soمباشرة في مشروعك.

1) تنزيل - يمكنك تنزيل OpenSSL من http://www.openssl.org/source/. حاليا في أندرويد 4.2 يفتحSL-1.0.1cوفي أندرويد 4.4 - يفتحSL-1.0.1e.يجب عليك استخدام نفس إصدار OpenSSL مثل النظام المستهدف.

(2) التجميع - قم بتشغيل الأمر التالي في وحدة التحكم:

القرص المضغوط $OPENSSL_SRC_PATH تصدير CC=”$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc –mtune=atome –march=atom –sysroot=$STANDALONE_TOOCHAIN_PATH/sysroot” تصدير AR=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ar تصدير RANLIB=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ranlib ./تكوين android-x86 –DOPENSSL_IA32_SSE2 –DAES_ASM –DVPAES_ASM make

بعد هذا الملف libcrypto.aسيظهر في مجلد المستوى الأعلى. لاستخدام الملف *.لذايدخل " تكوين android-x86 المشترك ***”.

(3) استخدم OpenSSL عبر NDK في مشروع Android: create مشروع أندرويد، أعلن عن الوظيفة ذات الصلة بـ OPENSSL كـ محلي، ثم استخدم الكود الموجود في جنى/*.ج.

بعد هذا تحتاج إلى نسخ الملفات *.أ/*.soوملف رأس للمشروع.

Mkdir jni/مترجم مسبقًا/ mkdir jni/include cp $OPENSSL_PATH/libcrypto.a jni/مترجم مسبقًا cp –L -rf $OPENSSL_PATH/include/openssl jni/include

ثم قم بإضافة السطر التالي إلى الملف jni/Android.mk:

... LOCAL_MODULE:= LOCAL_SRC_FILES ثابت:= مترجم مسبقًا/libcrypto.a ... LOCAL_C_INCLUDES:= يتضمن LOCAL_STATIC_LIBRARIES:= ثابت –lcrypto ...

يمكنك بعد ذلك استخدام الوظائف المتوفرة في OpenSSL لتنفيذ وظائفك تشفير/فك تشفير/SSL. لاستخدام Intel AES-NI، استخدم وظيفة السلسلة نائب الرئيس التنفيذي_*كما هو مبين أدناه. سيؤدي هذا تلقائيًا إلى تمكين وحدة أجهزة Intel AES-NI من إجراء تشفير وفك تشفير AES إذا كانت وحدة المعالجة المركزية تدعمها.

// أعلن EVP_CIPHER_CTX en, de; //init EVP_CIPHER_CTX_init(&en); EVP_CIPHER_CTX_init(&de); EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL); //فك التشفير والتشفير EVP_DecryptUpdate(&de, plaintext, &bytes_write, ciphertext, len); EVP_EncryptUpdate(&en, ciphertext, &cipher_len, plaintext, len); //تنظيف EVP_CIPHER_CTX_cleanup(&en); EVP_CIPHER_CTX_cleanup(&de);

ثم استخدام ndk-buildللتجميع.

Ndk-build APP_ABI=x86

(4) استخدام Java Crypto API: في أندرويد كيت كاتمزود OpenSSL المسمى " AndroidOpenSSL"يدعم Intel AES-NI، لذا يمكنك استخدامه javax.crypto.Cipherمباشرة.

تشفير التشفير = Cipher.getInstance(AES_ALGORITHM, "AndroidOpenSSL"); cipher.init(*);

مقياس الاداء

مقياس الاداء

أدوات الاختبار

(1) استخدم أدوات OPENSSL. فريق openslكجزء من OpenSSL يمكنه أداء العديد من المهام. ويمكن استخدامه لقياس الأداء باستخدام سرعة opensl. تقصير opensl((عند الإنشاء باستخدام خيار AES_ASM) سيستخدم تسريع الأجهزة Intel AES-NI تلقائيًا. يمكنك أيضًا تعطيل تسريع الأجهزة بسهولة عن طريق تعيين متغير بيئة واحد: قيمة OPENSSL_ia32cap ~0x200000200000000

سرعة Opensl –evp aes-256-cbc OPENSSL_ia32cap=~0x200000200000000 سرعة opensl –evp aes-256-cbc

(2) استخدم برنامجًا منزليًا.

الصورة 1.برنامج الاختبار الذي أنشأناه.

(3) Intel® Mobile Platform Monitor (Intel® MPM) عبارة عن أداة لمراقبة استهلاك الطاقة للحصول على معلومات تفصيلية حول وحدة المعالجة المركزية/وحدة معالجة الرسومات/حالة الطاقة، وما إلى ذلك. لمزيد من المعلومات، يرجى زيارة:

الشكل 2.برنامج إنتل® MPM

توقف عن التوصيف، ثم احفظ بيانات النتيجة. يتم عرض النتائج كملخص نصي أو كرسم بياني.

(4) استخدم تطبيق الاختبار من مكتبة Intel AES-NI، راجع . يستطيع تمكين أو تعطيل AESNIفي BIOS في بعض مشاريع الاختبار مثل aes_gladman_subset، لإظهار نتائج الأداء.

نتائج الإختبار

قمنا بتشغيل [برنامج الإدخال] على جهاز لوحي Bay Trail يعمل بنظام التشغيل Android 4.4. تظهر نتائج الاختبار لدينا أداء أفضل في التشفير وفك التشفير بمعدل 4 إلى 11 مرة، بالإضافة إلى توفير الطاقة بنسبة تزيد عن 40% عند استخدام Intel AES-NI.

بيانات الاختبار التفصيلية

الأجهزة: BAYTRAIL_FFRD8 PR1، نظام التشغيل: ANDROID 4.4
وضع
(كبك/256)
حجم الملف تم تمكين Intel® AES-NI تم تعطيل Intel® AES-NI
الوقت (الأوقات) بدون الإدخال/الإخراجالوقت (الأوقات) مع الإدخال/الإخراجالوقت (الأوقات) بدون الإدخال/الإخراجالوقت (الأوقات) مع الإدخال/الإخراج
التشفير351 م2.89 15.4 14.59 25.61
56 م0.48 2.35 2.63 4.55
فك التشفير351 م1.76 38.144 19.78 28.51
56 م0.29 1.9 3.16 4.62

    لا يوجد إدخال/إخراجمن الجدول أعلاه

    التشفير: تحسين الأداء بمقدار 5 أضعاف تقريبًا، على غرار OPENSSL
    النص: زيادة في الإنتاجية بمقدار 11 مرة تقريبًا

    مع الإدخال/الإخراجمن الجدول أعلاه

    التشفير: تحسين الأداء بمقدار 1.9 مرة تقريبًا
    النص: زيادة في الإنتاجية بمقدار الضعف تقريبًا

حالات استخدام Intel AES-NI

تُستخدم خوارزمية AES على نطاق واسع في سيناريوهات أمن البيانات المختلفة، مثل تشفير نقل البيانات عبر الشبكة، أو تشفير الأقراص بأكملها أو الملفات الفردية. في كل هذه السيناريوهات، يمكن استخدام Intel AES-NI طالما أن وحدة المعالجة المركزية تدعم التعليمات المطلوبة. في التين. ويبين الشكل 6 عملية نقل نموذجية للبيانات في الشبكة؛ يتم تشفير جميع البيانات المنقولة بين المستخدمين والخوادم بعد المصادقة.

الشكل 6.نقل بيانات الشبكة النموذجي

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

الشكل 7.سير عمل التشفير بالكامل

توفر تعليمات أجهزة Intel AES-NI أداءً عاليًا وتوفيرًا للطاقة، وهو أمر مهم بشكل خاص للأجهزة المحمولة مثل الهواتف الذكية والأجهزة اللوحية. تعد إدارة الأجهزة المحمولة (MDM) وإدارة محتوى الأجهزة المحمولة (MCM) من العوامل الحاسمة لحلول أمان المؤسسات. يصف هذا القسم Intel AES-NI بالاشتراك مع MDM وMCM.

من الأمثلة الجيدة على MDM عندما يرسل المسؤولون رسائل أو أوامر إلى المستخدمين النهائيين، ولكن يجب تشفير جميع البيانات الحساسة المرسلة. يستنزف حل AES البرمجي طاقة البطارية بسرعة عند نقل البيانات بشكل متكرر، لكن حل Intel AES-NI يستخدم حلول الأجهزة التي توفر الطاقة وتحسن الأداء. في التين. يوضح الشكل 8 سيناريو نموذجيًا يرسل فيه المسؤولون أوامر إلى المستخدمين باستخدام التشفير المستند إلى Intel AES-NI. يتضمن سير العمل تشفير الأوامر قبل إرسالها وفك تشفير البيانات لتنفيذ الأوامر على أجهزة المستخدم النهائي.

الشكل 8.تبادل بيانات MDM باستخدام تشفير AES

مثال MCM: يصل المستخدمون إلى البيانات الحساسة مثل المستندات والصور ومقاطع الفيديو وما إلى ذلك من خوادم الشركة. تحتاج مثل هذه البيانات المرسلة إلى حماية موثوقة. يجب تشفير كافة البيانات قبل إرسالها إلى المستخدمين النهائيين؛ وعلى أجهزة المستخدمين، يجب أيضًا تخزين البيانات بتنسيق مشفر. في التين. يوضح الشكل 9 سير عمل MCM النموذجي من البداية إلى النهاية عند قراءة البيانات وتخزينها بواسطة المستخدم النهائي. تدعم تعليمات Intel AES-NI تشفير 256 بت، مما يجعلها حلاً ممتازًا للأجهزة لمتطلبات الأمان والخصوصية على مستوى المؤسسات.

الشكل 9.سير عمل MCM

لتمكين تسريع أجهزة Intel AES-NI، يجب على المطورين استخدام برمجة NDK. في التين. يوضح الشكل 10 العلاقة النموذجية بين طبقات تطبيق Android ووحدة تشفير Android ووحدة Intel AES-NI C/C++. يتم استخدام Java Native Interface (JNI) لربط وظائف C/C++ بوظائف Java. إذا كانت برمجة NDK جديدة بالنسبة لك، فراجع مراجع NDK لمزيد من المعلومات.

الشكل 10.العلاقات النموذجية بين المستويات

خاتمة

توضح هذه المقالة كيفية استخدام تعليمات Intel AES-NI لتسريع التشفير على أجهزة Android. يوضح كيف يمكن للمطورين استخدام رمز التجميع ومكتبات الطرف الثالث وIntel NDK لتسريع التطبيقات وتوفير الطاقة. تم وصف سيناريوهين نموذجيين لتشفير البيانات وفك تشفيرها لمساعدة المطورين على استخدام Intel AES-NI في تطبيقاتهم.

لمزيد من المعلومات حول أدوات Intel®، يمكن لمطوري Android زيارة المواقع التالية: Intel® Developer Zone for Android.

عن المؤلفين

Zhang Li هو مهندس تطوير التطبيقات في قسم علاقات مطوري Intel® Software and Solutions Group (SSG) كجزء من فريق تمكين الأجهزة المحمولة. يشارك في دعم تطبيقات Android.

Yanqing Wang هو مهندس تطوير التطبيقات في قسم علاقات مطوري Intel® Software and Solutions Group (SSG) كجزء من فريق تمكين الأجهزة المحمولة. وتشمل مسؤولياته إدارة وأمن حلول المؤسسات. تتمتع بحالة الحزام الأسود لمنطقة مطوري Intel® (IDZ).

المواد المرجعية

Intel وشعار Intel وAtom وCeleron وCore وPentium وXeon هي علامات تجارية لشركة Intel Corporation في الولايات المتحدة وبلدان أخرى.
*الأسماء والعلامات التجارية الأخرى قد تكون ملكًا لأطراف ثالثة.
© شركة إنتل، 2014. جميع الحقوق محفوظة.