مجموعه دستورالعمل استاندارد رمزگذاری پیشرفته

**مجموعه دستورالعمل استاندارد رمزگذاری پیشرفته** در حال حاضر با پردازنده‌های بسیاری اجماع شده‌است. هدف از این مجموعه دستورالعمل، افزایش سرعت و همچنین مقاومت در برابر حملات جانبی کانال می‌باشد، برنامه‌ها برای انجام رمزگذاری و رمزگشایی از استاندارد رمزگذاری پیشرفته (AES) استفاده می‌کنند. آن‌ها اغلب به عنوان دستورالعمل‌هایی برای اجرا در یک دور AES می‌باشند همراه با یک نسخه خاص برای آخرین دور اجرا که روش دور آخر کمی متفاوت است .

## پردازنده‌های معماری x86
AES-NI (یا **دستورالعمل جدید استاندارد رمزگذاری پیشرفته** Intel یا به صورت خلاصه **AES-NI**) اولین پیاده‌سازی اساسی مجموعه بود. AES-NI یک فرمت معماری مجموعه دستورالعمل x86 برای ریزپردازنده‌های اینتل و **[[ای‌ام‌دی]]** است که توسط اینتل در مارس ۲۰۰۸ پیشنهاد شده‌است.

### دستورالعمل ها

### اینتل
پردازنده‌های اینتل زیر از دستورالعمل AES-NI پشتیبانی می‌کنند:  
* پردازنده مبتنی بر westmere به‌طور خاص :
* پردازنده سری westmere-EP(xeon 56xx) با نام مستعار gulftown سری DP سرور
* پردازنده‌های clarkdale(به استثنای core i3,pentium,celeron)
* پردازنده arrandale (به جز celeron,pentium,core i3,core i5-4XXm) 
* پردازنده‌های sandy bridge:
* مخصوص کامپیوترهای رومیزی: همه به جز پنتیوم، سلرون و core i3
* موبایل : تمام پردازنده‌های core i7 و core i5. چندین فروشنده بزرگ پردازنده‌هایی با تنظیمات بایوس غیر فعال پخش کردند که با بروز رسانی فعال میشدند.
* پردازنده‌های Ivy bridge.
* تمام i5,i7,Xeon و تنها i3-2115c
* پردازنده‌های  هاسول (به جز i3-4000m,pentium , celeron)
* پردازنده‌های broad well (همه به جز پنتیوم و سلرون)
* پردازنده‌های silvermont/airmont(همه به جز bay trail-D و bay trail-M)
* پردازنده‌های goldmont
* پردازنده‌های skylake
* پردازنده‌های kaby lake
* پردازنده‌های coffee lake

### AMD
چند پردازنده AMD از دستورالعمل AES پشتیبانی می‌کند: 
* پردازنده‌های مبتنی بر Jaguar و جدیدتر 
* پردازنده‌های مبتنی بر Puma و جدیدتر 
* پردازنده "تجهیزات سنگین" 
** پردازنده‌های مبتنی بر بولدوزر  
** پردازنده‌های مبتنی بر Piledriver 
** پردازنده‌های مبتنی بر Steamroller 
** پردازنده‌های بر پایه بیل و جدیدتر 
* پردازنده‌های مبتنی بر ذن 
* پردازنده‌های مبتنی بر Zen + 

## شتاب‌دهنده سخت‌افزاری در سایر معماری‌ها
پشتیبانی از AES با دستورالعمل‌های پردازنده غیرمجاز نیز در آخرین پردازنده‌های SPARC (T3، T4، T5، M5 و به جلو) و در آخرین پردازنده‌های ARM در دسترس است. پردازنده SPARC T4، که در سال ۲۰۱۱ معرفی شده‌است، دارای دستورالعمل‌های سطح_کاربر می‌باشد در مراحل AES را پشتیبانی می‌کند. این دستورالعمل‌ها علاوه بر دستورهای رمزنگاری سطح بالاتر می‌باشد. معماری پردازنده ARMv8-A، که در سال ۲۰۱۱ معرفی شد، از جمله ARM Cortex-A53 و A57 (اما پردازنده‌های قبلی v7 مانند Cortex A5، ۷، ۸، ۹، ۱۱، ۱۵  را شامل نمی‌شود) نیز دستورالعمل‌های سطح کاربر که مراحل AES را اجرا می‌کنند را دارند. در آگوست ۲۰۱۲، IBM اعلام کرد که معماری آینده Power7 + از AES پشتیبانی خواهد کرد. دستورها در این معماری با دستورهای AES-NI یکسان نیستند، اما قابلیت‌های مشابهی را در اختیار مصرف‌کننده می‌گذارند.

IBM Z9 یا هسته‌های اصلی پردازنده بعدی AES را به عنوان تک دستور العمل AES ECB / CBC AES ECB / CBC از طریق سخت‌افزار CryptoExpress IBM اجرا می‌کنند. اجرای این نسخه AES تک دستورالعمل، از اجرای Intel NIها راحتتر می‌باشد، اما ممکن است برای اجرای الگوریتم‌های دیگر که بر اساس توابع مرحله ای AES می‌باشد گسترش نیابد (مانند تابع رمزگذاری گرداب (whirlpool)).

### پشتیبانی از پردازنده‌های x86
پردازنده‌های VIA x86، AMD Geode و Marvell Kirkwood (که در لینوکسARM, mv_cesa) از شتاب‌دهنده‌های درایوری به جای AES استفاده می‌کنند. (نگاه کنید به API Crypto (لینوکس).)

تراشه‌های زیر، در حالی که از سخت‌افزار شتاب‌دهنده‌های AES پشتیبانی می‌کنند، از دستورالعمل AES پشتیبانی نمی‌کنند:
* پردازنده‌های AMD Geode LX
* از طریق
** VIA PadLock
*** پردازنده‌های VIA C3 Nehemiah C5P (Eden-N)
*** پردازنده‌های VIA C7 Esther C5J

### ARM معماری
اطلاعات برنامه‌نویسی در *ARM Architecture Reference Manual ARMv8 برای مشخصات معماری ARMv8-A موجود است*.
* معماری ARMv8-A
** فرمت‌های رمزنگاری ARM به‌طور اختیاری بر روی هسته‌های ARM Cortex-A30 / 50/70 پشتیبانی می‌شوند
* شتاب‌دهنده‌های سخت‌افزاری رمزنگاری / موتورهای
** allwinner
*** A10، A20، A30، A31، A80، A83T, H3 و A64 با استفاده از *سیستم امنیتی*
** **[[برودکام]]**
*** BCM5801 / BCM5805 / BCM5820 با استفاده از *پردازشگر امنیتی*
** '''ان‌ایکس‌پی''' نیمه هادی‌ها
*** i.MX6 به بعد
** کوالکام
*** Snapdragon 805 به زودی
** Rockchip
*** سری RK30xx به بعد
** سامسونگ
*** سری Exynos 3 به بعد

### معماری دیگر
* '''ریزکنترل‌گر ای‌وی‌آر''' (شتاب‌دهنده در تراشه با اجرای موازی، دستورالعمل نیست)
* SPARC T3 و پردازنده‌های بعدی پشتیبانی سخت‌افزاری برای چند الگوریتم رمزنگاری، از جمله AES دارند.
* Cavium Octeon MIPS تمامی پردازنده‌های مبتنی بر MIPS مبتنی بر Cavium Octeon دارای پشتیبانی سخت‌افزاری برای چند الگوریتم رمزنگاری هستند، از جمله AES با استفاده از دستورالعمل‌های خاص coprocessor 3.

## کارایی
پاتریک اشمیت و اکیم راس در *تحلیل عملکرد AES-NI*، نتایج قابل توجهی از تعداد زیادی از برنامه‌های کاربردی که در حال حاضر بهینه سازی شده‌اند تا از مزایای قابلیت AES-NI اینتل بهره مند شوند، بدست اورده‌اند.  تجزیه و تحلیل عملکرد با استفاده از کتابخانه امنیت ++Crypto افزایش بهره را از حدود 28.0 سیکل در بایت به 3.5 سیکل در هر بایت با AES / GCM به نسبت پنتیوم 4 بدون شتاب دهنده نشان داد.       

## پشتیبانی از نرم‌افزار
بیشتر کامپایلرهای مدرن می‌توانند دستورالعمل AES را منتشر کنند. 

نرم‌افزار امنیتی و رمزنگاری زیادی از مجموعه دستورالعمل AES پشتیبانی می‌کند . از جمله زیرساخت اصلی زیر: 
* رمزنگاری API: نسل بعدی (CNG) (نیاز به ویندوز)  
* API Crypto لینوکس 
* جاوا 7 HotSpot **[[هات‌اسپات]]**
* خدمات امنیت شبکه (NSS) نسخه 3.13 و بالاتر  (استفاده شده توسط فایرفاکس و گوگل کروم ) 
* Solaris Cryptographic Framework  در Solaris 10 به بعد 
* در **[[فری‌بی‌اس‌دی]]** را (OpenCrypto API (aesni (4) driver  
* **[[اپن‌اس‌اس‌ال]]** 1.0.1 و بالاتر  
* FLAM / FLUC 5.1.08 (منتشر شد 2015-08-24) و بالاتر 
* Bloombase

## همچنین نگاه کنید
* پسوند پیشرفته Vector (AVX) 
* دستور CLMUL مجموعه 
* مجموعه دستورالعمل FMA (FMA3، FMA4) 
* RdRand 

## منابع

## لینک های خارج
** رده:استاندارد رمزنگاری پیشرفته
رده:دستورالعمل‌های اکس۸۶
رده:صفحات با ترجمه بازبینی‌نشده
رده:فناوری‌های دستگاه‌های میکرو پیشرفته
رده:معماری اکس۸۶