استاندارد رمزنگاری پیشرفته: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
Saberba (بحث | مشارکت‌ها)
جزبدون خلاصۀ ویرایش
Saberba (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱۱۴: خط ۱۱۴:
|date=2009-07-01
|date=2009-07-01
|work=Schneier on Security, A blog covering security and security technology
|work=Schneier on Security, A blog covering security and security technology
|accessdate=2010-03-11| archiveurl= http://web.archive.org/web/20100208155652/http://www.schneier.com/blog/archives/2009/07/new_attack_on_a.html| archivedate= 8 February 2010 <!--DASHBot-->| deadurl= no}}</ref> در مورد يك حمله مرتبط با کلید در نسخه های 192-بیتی و 256 بیتی AES خبر داد، كه توسط Alex Biryukov و Dmitry Khovratovich كشف شده بود[17]<ref>{{cite web
|accessdate=2010-03-11| archiveurl= http://web.archive.org/web/20100208155652/http://www.schneier.com/blog/archives/2009/07/new_attack_on_a.html| archivedate= 8 February 2010 <!--DASHBot-->| deadurl= no}}</ref> در مورد يك حمله مرتبط با کلید در نسخه های 192-بیتی و 256 بیتی AES خبر داد، كه توسط Alex Biryukov و Dmitry Khovratovich كشف شده بود<ref>{{cite web
|url=http://eprint.iacr.org/2009/317
|url=http://eprint.iacr.org/2009/317
|title=Related-key Cryptanalysis of the Full AES-192 and AES-256
|title=Related-key Cryptanalysis of the Full AES-192 and AES-256
خط ۱۲۰: خط ۱۲۰:
|coauthors=Khovratovich, Dmitry
|coauthors=Khovratovich, Dmitry
|date=2009-12-04
|date=2009-12-04
|accessdate=2010-03-11}}</ref> که اين حمله از زمانبندي كليد تا حدودی ساده AES استفاده كرده ودارای پیچیدگی 2119 است. در دسامبر 2009، اين پيچيدگي به 299.5 بهبود یافته بود. این حمله دنباله حمله اي بودكه پیش از آن در سال 2009 توسط Alex Biryukov، Dmitry Khovratovich و Nikolić Ivica با یک پیچیدگی از 296 برای یکي از هر 235 کلید بود. [18]
|accessdate=2010-03-11}}</ref> که اين حمله از زمانبندي كليد تا حدودی ساده AES استفاده كرده ودارای پیچیدگی 2<sup>99.5</sup> است. در دسامبر 2009، اين پيچيدگي به 2<sup>99.5</sup> بهبود یافته بود. این حمله دنباله حمله اي بودكه پیش از آن در سال 2009 توسط Alex Biryukov، Dmitry Khovratovich و Nikolić Ivica با یک پیچیدگی از 296 برای یکي از هر 2<sup>35</sup> کلید بود. <ref>{{cite book
|title=Advances in Cryptology - CRYPTO 2009
|chapter=Distinguisher and Related-Key Attack on the Full AES-256
|last1=Nikolić
|first1=Ivica
|year=2009
|publisher=Springer Berlin / Heidelberg
|isbn=978-3-642-03355-1
|pages=231–249
|doi=10.1007/978-3-642-03356-8_14
|accessdate=2010-03-11}}</ref>







نسخهٔ ‏۲۶ نوامبر ۲۰۱۲، ساعت ۰۵:۲۲

استاندارد رمزنگاری پیشرفته مشخصه‌ای برای رمزنگاری داده‌های الکترونیکی است که در سال ۲۰۰۱ توسط مؤسسه ملی فناوری و استانداردهای ایالات متحده ایجاد گردید.[۱] این رمز که در ابتدا ریندال(به انگلیسی: Rijndael) نامیده می‌شد، توسط دو رمزنگار بلژیکی به نامهای ژوآن دیمن (به انگلیسی: Joan Daemen) و وینسنت رینمن (به انگلیسی: Vincent Rijmen) توسعه داده شد، کسانی که فرایند انتخاب AES را ارائه نمودند.[۲]
استاندارد رمزنگاری پیشرفته توسط دولت ایالات متحده پذیرفته شده و اکنون در سراسر جهان استفاده می‌گردد. این الگوریتم رمزنگاری به جای استاندارد رمزنگاری داده‌ها (DES) که در سال ۱۹۷۷ منتشر شده[۳]، جایگزین گردیده‌است. الگوریتم استاندارد رمزنگاری پیشرفته یک الگوریتم کلید متقارن است، بدین معنی که از یک کلید یکسان برای رمزنگاری و رمزگشایی استفاده می‌شود.

در ایالات متحده، استاندارد رمزنگاری پیشرفته توسط موسسه ملی استانداردها و تکنولوژی به عنوان FIPS PUB 197 در نوامبر ۲۰۰۱ اعلان گردید.[۱] این اعلان بعد از یک فرایند استانداردسازی پنج ساله بود که در این فرآیند ۱۵ طرح، تا قبل از معرفی رمز Rijndael به عنوان گزینه مناسب، ارائه و ارزیابی کردید (برای جزئیات بیشتر Advanced Encryption Standard process مطالعه گردد). این رمزنگاری به عنوان استاندارد دولت فدرال در ماه می ۲۰۰۲ بعد از تایید توسط Secretary of Commerce بکار گرفته شد. استاندارد رمزنگاری پیشرفته در استاندارد ISO/IEC 18033-3 قرار گرفته‌است. استاندارد رمزنگاری پیشرفته در بسته‌های رمزنگاری متفاوتی در دسترس بوده و نخستین cipher باز و در دسترس عموم است که توسط آژانس امنیت ملی ایالات متحده آمریکا (NSA)، بعد از بکارگیری در یک ماژول رمزنگاری تایید شده NSA، برای اطلاعات خیلی محرمانه تصدیق شده‌است(امنیت AES مطالعه گردد).

نام ریندال (تلفظ هلندی: [ˈrɛindaːl]) ترکیبی از نام‌های دو مخترع است. اگر بخواهیم دقیق شویم، استاندارد AES گونه‌ای از ریندال است که اندازه بلاک آن ۱۲۸ بیتی است.

شرح رمز

استاندارد رمزنگاری پیشرفته بر اساس یک قاعده طراحی به نام substitution-permutation network است و به هر دو صورت سخت افزاری و نرم افزاری سریع است.[۴] برخلاف DES، استاندارد رمزنگاری پیشرفته از رمزنگاری فیستل استفاده نمی‌کند. استاندارد رمزنگاری پیشرفته گونه‌ای از Rijndael است که اندازه بلاکثابت ۱۲۸ بیتی و اندازه کلید ۱۲۸، ۱۹۲ و ۲۵۶ بیتی دارد. در مقابل، مشخصه per se الگوریتم Rijndael با اندازه کلید و اندازه بلاکی تعیین می‌شود که می‌تواند هر ضریبی از ۳۲ بیت، با حداقل ۱۲۸ و حداکثر ۲۵۶ بیت باشد.

استاندارد رمزنگاری پیشرفته روی ماتریسی ۴*۴ از بایت‌ها با ترتیب ستونی، که state نامیده می‌شود، عمل می‌کند، اگرچه برخی نسخه‌های Rijndael اندازه بلاک بزرگتر و ستونهای بیشتری در state دارند. بیشترین محاسبات AES در یک finite field خاص انجام می‌گیرد.

اندازه کلید استفاده شده در رمز AES، تعداد تکرارهای چرخه‌های تبدیل (transformation) را تعیین می‌کند که ورودی، با نام متن عادی (plaintext) را به خروجی نهایی با نام متن رمز شده (ciphertext) تبدیل می‌نماید. تعداد چرخه‌های تکرار به صورت زیر است:

  • ۱۰ چرخه تکرار برای کلیدهای ۱۲۸ بیتی.
  • ۱۲ چرخه تکرار برای کلیدهای ۱۹۲ بیتی.
  • ۱۴ چرخه تکرار برای کلیدهای ۲۵۶ بیتی.

هر تکرار شامل چندین مرحله پردازشی است، که یک مرحله بستگی به کلید رمزنگاری دارد. مجموعه‌ای از چرخه‌های معکوس برای تبدیل متن رمز شده به متن اصلی با استفاده از همان کلید رمزنگاری بکار گرفته می‌شود.

شرح کلی الگوریتم

  1. بسط کلید (KeyExpansion) - کلیدهای چرخه از کلید رمز با استفاده از زمانبندی کلید Rijndael مشتق می‌شود.
  2. چرخه اولیه
    1. AddRoundKey - هر بایت از state با کلید چرخه توسط xor بیت به بیت ترکیب می‌شود.
  3. چرخه‌ها
    1. SubBytes- مرحله جانشین سازی (substitution) غیر خطی که هر بایت با بایت دیگری بر اساس یک جدول جستجو (lookup table) جایگزین می‌شود.
    2. ShiftRows- مرحله جابجاسازی (transposition) که هر سطر از state به صورت تکراری در چند مرحله معین شیفت می‌یابد.
    3. MixColumns- فرایند در هم ریختن (mixing) ستون‌ها که روی ستون‌های state عمل می‌نماید و چهار بایت از هر ستون را ترکیب می‌نماید.
    4. AddRoundKey
  4. مرحله آخر
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

مرحله SubBytes

در ShiftRows هر بایت در state با مقداری در جدول جستجو با ۸ بیت ثابت جایگزین می‌شود، (S; bij = S(aij

در مرحله SubBytes، هر بایت در ماتریس state با استفاده از substitution box 8 بیتی Rijndael S-box با یک SubByte جایگزین می‌گردد.S-box استفاده شده از معکوس فزاینده (multiplicative inverse) روی GF(2۸) مشتق شده‌است که به داشتن خصوصیات غیرخطی خوب مشهور است. برای اجتناب از حملات مبتنی بر خصوصیات جبری ساده، S-box به وسیله ترکیب تابع معکوس با یک affine transformation معکوس پذیر ایجاد می‌گردد. affine transformation. S-box همچنین به گونه‌ای انتخاب می‌شود که از هرگونه نقاط ثابت (و همچنین آشفتگی) و هرگونه نقاط ثابت معکوس اجتناب شود.

مرحله ShiftRows

در مرحله ShiftRows بایت‌ها در هر سطر از state به صورت چرخشی شیفت داده می‌شوند. تعداد مکانهایی که هر بایت شیفت می‌یابد برای هر سطر متفاوت است.

مرحله ShiftRows روي سطرهاي state عمل مي كند. در اين مرحله بايت هاي هر سطر به وسيله يك آفست (Offset) معين به صورت چرخشي شيفت مي يابد. براي AES، نخستين سطر بدون تغيير باقي مي ماند. هر بايت از سطر دوم يكي به سمت چپ شيفت مي يابد. به صورت مشابه، سطرهاي سوم و چهارم به ترتيب با آفست هاي دو و سه شيفت مي يابند. براي بلاك هاي با اندازه 128 و 192 بيتي، الگوي شيفت دادن يكسان است. سطر n به تعداد n-1 بايت به صورت چرخشي به چپ شيفت مي يابد. بدين صورت، هر ستون از state خروجي در اين مرحله تركيب شده بايت هاي هر ستون از state ورودي است. ( انواع Rijndael با اندازه بلاك بزرگتر، آفست هايي اندكي متفاوت دارند.) براي يك بلاك 256 بيتي، نخستين سطر بدون تغيير باقي مي ماند و سطرهاي دوم و سوم و چهارم به ترتيب يك، سه و چهار بايت شيفت مي يابد. اين تغيير تنها براي رمز Rijndael با بلاك 256 بيتي اعمال مي شود چون AES بلاك هاي 256 بيتي استفاده نمي كند.

مرحله MixColumns

در مرحله MixColumns هر ستون از state با یک چندجمله ای (C(x ضرب می شود.

در مرحله MixColumns، چهار بایت از هر ستون state با استفاده از تبدیل خطی معکوس ترکیب می شوند. تابع MixColumns چهار بایت را به عنوان ورودی در نظر می گیرد و چهار بایت را به خروجی می دهد، که هر بایت ورودی بر هر چهار بایت خروجی تاثیر می گذارد. به همراه ShiftRows، مرحله MixColumns آشفتگی و پخش (diffusion) را در رمزنگاری فراهم می نماید.

در طول این عمل، هر ستون توسط ماتریس شناخته شده ای که برای کلید 128 بیتی است ضرب می گردد.

عمل ضرب بدین صورت تعریف می شود: ضرب در 1 به معنی بدون تغییر، ضرب در 2 به معنای جابجایی به سمت چپ و ضرب در 3 به معنای جابجایی به سمت چپ و سپس انجام XOR را با مقدار اولیه جابجانشده. پس از جابجایی، اگر مقدار جابجاشده بیشتر از 0xFF باشد، XOR شرطی با 0x11B باید انجام شود.

به صورت کلی تر، هر ستون به عنوان یک چند جمله ای روی (GF(2^8 تلقی می شود و پس از آن پیمانه x4+1 با یک چند جمله ای ثابت c(x) = 0x03 · x3 + x2 + x + 0x02 ضرب شده است. ضرایب با معادل مبنای 16 از نمایش دودویی بیت های چندجمله ای [GF(2)[x نمایش داده می شود. مرحله MixColumns همچنین می تواند به صورت ضرب یک ماتریس خاص MDS در یک finite field دیده شود. این فرایند در مقاله ستون های ترکیبی Rijndael به صورت مفصل تر شرح داده شده است.

مرحله AddRoundKey

در مرحله AddRoundKey هر بایت از stat با یک بایت از subkey چرخه با استفاده از عمل XOR (⊕) ترکیب می شود.

در مرحله AddRoundKey، subkey با state ترکیب می شود. در هر دور، یک subkey از کلید اصلی توسط زمانبند کلید Rijndael مشتق می شود. هر subkey به همان اندازه state است. subkey با ترکیب کردن هر بایت از state با بایت متناظر از subkey با استفاده از XOR بیتی جمع بسته می شود.

بهینه سازی رمز

در سیستم های با کلمات 32 بیتی یا بزرگتر، این امکان وجود دارد که به وسیله ترکیب مراحل SubBytes و ShiftRows با مرحله MixColumns با تبدیل آنها به دنباله ای از جستجوهای های جدول، اجرای این رمزنگاری را سرعت بخشید . این امر نیازمند چهار جدول با 256 مدخل 32 بیتی و بهره گیری از چهار کیلوبایت (4096 کلمه) حافظه ( یک کیلوبایت برای هر جدول) است. آنگاه یک چرخه می تواند با 16 جستجوی جدول و 12 عمل OR انحصاری 32 بیتی و در ادامه با چهار عمل OR انحصاری 32 بیتی در مرحله AddRoundKey انجام می شود. [۵]

اگر اندازه جدول چهار کیلوبایتی برای پلت فرم مقصد بزرگ است، جستجوی جدول می تواند با یک جدول با 256 مدخل 32 بیتی (یعنی 1 کیلوبایت) با استفاده از تکرارهای چرخشی انجام گردد.

با استفاده از رویکرد بایت گرا، ترکیب مراحل SubBytes ، ShiftRows و MixColumns به یک چرخه تنها امکان پذیر است. [۶]

امنیت

تا ماه مه 2009، تنها حملات منتشر شده موفق علیه AES کامل، حملات Side-Channel در برخی از پیاده سازی های خاص بود.آژانس امنیت ملی (NSA) همه AES های فینالیست، از جمله Rijndael را بازبینی کرد، و اظهار داشت که همه آنها برای اطلاعات غیر طبقه بندی شده دولت ایالات متحده به اندازه کافی امن است. در ماه ژوئن سال 2003، دولت ایالات متحده اعلام کرد که AES می تواند برای محافظت از اطلاعات طبقه بندی شده مورد استفاده قرار گیرد:

طراحی و قدرت تمام طول کلیدهای الگوریتم AES (به عنوان مثال 128، 192 و 256) برای محافظت از اطلاعات طبقه بندی شده تا سطح محزمانه کافی است. اطلاعات خیلی محرمانه نیاز به استفاده کلیدهای با طول 192 یا 256 دارد. پیاده سازی AES در محصولات در نظر گرفته شده برای حفاظت از سیستم های امنیت ملی و / یا اطلاعات باید توسط NSA ، پیش از استفاده، بازبینی و مجوز داده شود. [۷]

AES دارای 10 چرخه برای کلیدهای 128 بیتی، 12 چرخه برای کلیدهای 192 بیتی و 14 چرخه برای کلیدهای 256 بیتی می باشد. در سال 2006، بهترین حملات شناخته شده در 7 چرخه برای کلیدهای 128 بیتی، 8 چرخه برای کلیدهای 192 بیتی، و 9 چرخه برای کلیدهای 256 بیتی بودند. [۸]

حملات شناخته شده

برای رمزنگاران، شکست (break) رمزنگاری هر چیزی است که سریع تر از انجام brute force (رمزگشایی آزمایشی برای هر یک کلید) باشد. حملات brute force با تکنولوژی فعلی نشدنی هستند. بزرگترین حمله موفقیت آمیز و به صورت عمومی شناخته شده brute force ، در برابر هر گونه رمزنگاری block-cipher در برابر RC5 با کلید 64 بیتی به وسیله distributed.net در سال 2006 بود. [۹]

AES است شرح جبری نسبتا ساده دارد. [۱۰] در سال 2002، یک حمله نظری، با عنوان "حمله XSL" ، توسط Nicolas Courtois و Josef Pieprzyk اعلام شد، که به نظر می رسید ضعفی را در الگوریتم AES به علت شرح ساده نشان می دهد. [۱۱] از آن زمان به بعد، مقالات دیگر نشان داده اند که که حمله ارائه شده ناکارآمد است.حمله ایکس‌اس‌ال مطالعه شود.

در طول روند AES، توسعه دهندگان الگوریتم های محاسباتی درباره Rijndael نوشتند، "... ما نگران استفاده از آن... در برنامه های کاربردی حساس امنیتی هستیم." [۱۲] با این حال، در ماه اکتبر سال 2000 و در پایان فرایند انتخاب AES ، Bruce Schneier، توسعه دهنده الگوریتم محاسباتی Twofish ، در حالی که فکر می کرد حملات موفق دانشگاهی روی Rijndael روزی توسعه داده خواهد شد، نوشت: "من باور ندارم که هیچ کسی حمله ای را کشف کند که اجازه دهد کسی ترافیک Rijndael را بخواند."[۱۳]

در تاریخ 1 ژوئیه 2009، Bruce Schneier، در وبلاگش [۱۴] در مورد يك حمله مرتبط با کلید در نسخه های 192-بیتی و 256 بیتی AES خبر داد، كه توسط Alex Biryukov و Dmitry Khovratovich كشف شده بود[۱۵] که اين حمله از زمانبندي كليد تا حدودی ساده AES استفاده كرده ودارای پیچیدگی 299.5 است. در دسامبر 2009، اين پيچيدگي به 299.5 بهبود یافته بود. این حمله دنباله حمله اي بودكه پیش از آن در سال 2009 توسط Alex Biryukov، Dmitry Khovratovich و Nikolić Ivica با یک پیچیدگی از 296 برای یکي از هر 235 کلید بود. [۱۶]





See also

Notes

  1. ۱٫۰ ۱٫۱ "Announcing the ADVANCED ENCRYPTION STANDARD (AES)" (PDF). Federal Information Processing Standards Publication 197. United States National Institute of Standards and Technology (NIST). November 26, 2001. Retrieved October 2, 2012.
  2. John Schwartz (October 3, 2000). "U.S. Selects a New Encryption Technique". New York Times.
  3. Westlund, Harold B. (2002). "NIST reports measurable success of Advanced Encryption Standard". Journal of Research of the National Institute of Standards and Technology.
  4. Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson, Tadayoshi Kohno, Mike Stay (May 2000). "The Twofish Team's Final Comments on AES Selection" (PDF).{{cite web}}: نگهداری یادکرد:نام‌های متعدد:فهرست نویسندگان (link)
  5. "Efficient software implementation of AES on 32-bit platforms". Lecture Notes in Computer Science: 2523. 2003
  6. http://code.google.com/p/byte-oriented-aes
  7. Lynn Hathaway (June 2003). "National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information" (PDF). Retrieved 2011-02-15.
  8. John Kelsey, Stefan Lucks, Bruce Schneier, Mike Stay, David Wagner, and Doug Whiting, Improved Cryptanalysis of Rijndael, Fast Software Encryption, 2000 pp213–230 [۱]
  9. Ou, George (April 30, 2006). "Is encryption really crackable?". Ziff-Davis. Archived from the original on August 7, 2010. Retrieved August 7, 2010.
  10. "Sean Murphy". University of London. Retrieved 2008-11-02.
  11. Bruce Schneier. "AES News, Crypto-Gram Newsletter, September 15, 2002". Archived from the original on 7 July 2007. Retrieved 2007-07-27.
  12. Niels Ferguson, Richard Schroeppel, Doug Whiting (2001). "A simple algebraic representation of Rijndael". Proceedings of Selected Areas in Cryptography, 2001, Lecture Notes in Computer Science. Springer-Verlag. pp. 103–111. Archived from the original (PDF/PostScript) on 4 November 2006. Retrieved 2006-10-06. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)نگهداری یادکرد:نام‌های متعدد:فهرست نویسندگان (link)
  13. Bruce Schneier, AES Announced, October 15, 2000
  14. Bruce Schneier (2009-07-01). "New Attack on AES". Schneier on Security, A blog covering security and security technology. Archived from the original on 8 February 2010. Retrieved 2010-03-11.
  15. Biryukov, Alex (2009-12-04). "Related-key Cryptanalysis of the Full AES-192 and AES-256". Retrieved 2010-03-11. {{cite web}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  16. Nikolić, Ivica (2009). "Distinguisher and Related-Key Attack on the Full AES-256". Advances in Cryptology - CRYPTO 2009. Springer Berlin / Heidelberg. pp. 231–249. doi:10.1007/978-3-642-03356-8_14. ISBN 978-3-642-03355-1. {{cite book}}: |access-date= requires |url= (help)

References

  • Nicolas Courtois, Josef Pieprzyk, "Cryptanalysis of Block Ciphers with Overdefined Systems of Equations". pp267–287, ASIACRYPT 2002.
  • Joan Daemen, Vincent Rijmen, "The Design of Rijndael: AES - The Advanced Encryption Standard." Springer, 2002. ISBN 3-540-42580-2.
  • Christof Paar, Jan Pelzl, "The Advanced Encryption Standard", Chapter 4 of "Understanding Cryptography, A Textbook for Students and Practitioners". (companion web site contains online lectures on AES), Springer, 2009.

External links