رمزنگاری AES-Advanced Encryption Standard
mba
10 شهریور 1400
دسته بندی csharp-asp.net
استاندارد رمزنگاری پیشرفته (به انگلیسی: Advanced Encryption Standard) یا به اختصار AES مشخصهای برای رمزنگاری دادههای دیجیتال است که در سال ۲۰۰۱ توسط مؤسسه ملی فناوری و استانداردهای ایالات متحده ایجاد گردید.این رمز که در ابتدا ریندال(به انگلیسی: Rijndael) نامیده میشد و توسط دو رمزنگار بلژیکی به نامهای ژوآن دیمن (به انگلیسی: Joan Daemen) و وینسنت رینمن (به انگلیسی: Vincent Rijmen) توسعه داده شد
استاندارد رمزنگاری پیشرفته توسط دولت ایالات متحده پذیرفته شده و اکنون در سراسر جهان استفاده میگردد. این الگوریتم رمزنگاری به جای استاندارد رمزنگاری دادهها (DES) که در سال ۱۹۷۷ منتشر شده،جایگزین گردیدهاست. الگوریتم AES یک الگوریتم کلید متقارن است، بدین معنی که از یک کلید یکسان برای رمزنگاری و رمزگشایی استفاده میشود
در ایالات متحده، AES توسط مؤسسه ملی استانداردها و تکنولوژی به عنوان FIPS PUB 197 در نوامبر ۲۰۰۱ اعلان گردید. این اعلان بعد از یک فرایند استانداردسازی پنج ساله بود که در این فرایند ۱۵ طرح، تا قبل از معرفی رمز Rijndael به عنوان گزینه مناسب، ارائه و ارزیابی کردید. این رمزنگاری به عنوان استاندارد دولت فدرال در ماه می ۲۰۰۲ بعد از تأیید توسط وزارت بازرگانی آمریکا به کار گرفته شد. AES در استاندارد ISO/IEC 18033-3 قرار گرفتهاست. AES در بستههای رمزنگاری متفاوتی در دسترس بوده و نخستین سایفر باز و در دسترس عموم است که توسط آژانس امنیت ملی ایالات متحده آمریکا (NSA)، بعد از بکارگیری در یک ماژول رمزنگاری تأیید شده NSA، برای اطلاعات خیلی محرمانه تصدیق شدهاست(امنیت AES مطالعه گردد)
الگوریتم DES در دههٔ ۷۰ میلادی در آمریکا بهعنوان یک استاندارد کدگذاری مطرح شد. این الگوریتم اینگونه عمل میکند که رشتهای از متن اصلی با طول ثابت را به عنوان ورودی میگیرد و پس از انجام یک سری اعمال پیچیده روی آن خروجی را که طولی برابر طول ورودی دارد تولید میکند. DES هم چنین از یک کلید برای ایجاد رمز استفاده میکند و تنها کسانی قادر به رمزگشایی خواهند بود که مقدار کلید را میدانند. اگرچه تحلیلهایی که دربارهٔ DES انجام شدهاست از هر روش رمز قطعهای دیگری بیشتر است ولی عملیترین حمله علیه این الگوریتم جستجوی جامع فضای کلید است. سه حمله تئوریکی برای این الگوریتم وجود دارند که زمان کمتری نسبت به جستجوی جامع فضای کلید نیاز دارند ولی این روشها در عمل امکانپذیر نیستند
با شکسته شدن الگوریتمDES این استاندارد در سال ۱۹۹۸ تمدید نشد و در سال ۲۰۰۱، الگوریتم AES به عنوان استاندارد جایگزین آن تصویب شد. این الگوریتم مانند DES یک الگوریتم رمزقطعهای است ولی بر خلاف DES از ساختار فیستل استفاده نمیکند. تا سال ۲۰۰۶ تنها حمله مؤثر علیه الگوریتمAES حمله side channel بودهاست. در ژوئن سال ۲۰۰۳ دولت آمریکا اعلام کرد که از AES میتوان برای حفاظت از اطلاعات ردهبندی شده و سری نیز استفاده کرد. برای اطلاعات فوق سری و محرمانه باید از کلیدهایی با طول ۱۹۲ یا ۲۵۶ بیت استفاده کرد
در سال ۱۹۷۲ مؤسسه بینالمللی استاندارد و فناوری آمریکا اعلام کرد که به یک الگوریتم برای حفاظت از اطلاعات غیر ردهبندی شده خود نیاز دارد. این الگوریتم میبایست ارزان، قابل دسترس و بسیار مطمئن میبود. در سال ۱۹۷۳،NIST فراخوانی برای چنین الگوریتمی اعلام نمود ولی هیچیک از الگوریتمهایی که در پاسخ به این فراخوان ارائه شدند شرایط لازم را نداشتند. دومین فراخوان در سال ۱۹۷۴ مطرح شد در این زمان IBM الگوریتم خود را مطرح نمود که به نظر میرسید میتواند نیازهای NIST را بر طرف کند. این الگوریتم به عنوان یک استاندارد فدرال در سال ۱۹۷۶ تصویب شد و در سال ۱۹۷۷ منتشر شد. با امکانپذیر شدن حمله جستجوی جامع فضای کلید برای این الگوریتم، سازمان ملی استاندارد و فناوری آمریکا در آغاز سال ۱۹۹۷اعلام کرد که برای تدوین استاندارد پیشرفته رمزنگاری تلاشی را آغاز کردهاست. در سپتامبر همان سال این سازمان به طور رسمی فراخوانی را برای ارائه الگوریتمهای رمزنگاری اعلام نمود.
مشخصات عمومی ریندال
رایندال، یک الگوریتم رمز قطعهای متفارن، با طول قالب داده ۱۲۸، ۱۹۲ و ۲۵۶ بیت است. طول کلید نیز مستقل از طول قالب، ۱۲۸٬۱۹۲یا ۲۵۶ بیت باشد. الگوریتم بسته به طول قالب داده و طول کلید، مشتمل بر ۱۰، ۱۲ یا ۱۴ دور خواهد بود. رایندال دارای ساختاری برای بسط کلید است که از روی کلید اصلی بسته به تعداد دورها، تعدادی زیر کلید تولید میکند که در هر دور به قالب داده اضافه میشوند. الگوریتم، شامل سه تبدیل مهم ()MixColumn و ()ShiftRow و ()SubByte است که اولی یک تابع جایگزینی غیر خطی و تأمین کننده امنیت سیستم و دومی و سومی توابعی خطی برای افزایش گسترش و اختلاط الگوریتم اند. در این رمز قطعهای، ساختار سیستم رمزگشا، دقیقاً مشابه سیستم رمزگذار نیست. هم چنین چون با افزایش طول کلید تعداد دورهای الگوریتم افزایش مییابد، زمان اجرا و سرعت الگوریتم به طول کلید وابسته است
تا سال ۲۰۰۶ تنها حمله مؤثر علیه الگوریتم AES حمله side channel بودهاست. آژانس ملی امنیت آمریکا (NSA) هر پنج الگوریتمی را که به مرحله نهایی راه یافتند را بررسی کرد و پس از بررسی، اعلام نمود که همه این الگوریتمها برای حفاظت اطلاعات غیر سری آمریکا، به اندازه کافی، امنیت را فراهم میکنند. در ژوئن سال ۲۰۰۳ دولت آمریکا اعلام کرد که از AES میتوان برای حفاظت از اطلاعات ردهبندی شده و سری نیز استفاده کرد. برای اطلاعات فوق سری و محرمانه باید از کلیدهایی با طول ۱۹۲ یا ۲۵۶ بیت استفاده کرد. این اولین بار بود که NSA یک روش رمزنگاری را برای رمزگذاری اطلاعات فوق محرمانه در اختیار عموم قرار میداد. رایجترین راه برای حمله به رمز قطعهای امتحان کردن حملات متنوع، روی نسخههای رمز با تعداد کاهش یافتهای "دور" است. AES برای کلیدهای ۱۲۸ بیتی ۱۰ دور، برای کلیدهای ۱۹۲ بیتی ۱۲ دور و برای کلیدهای ۲۵۶ بیتی ۱۴ دور دارد. تا سال ۲۰۰۶ بهترین حمله با استفاده از ۷ دور برای کلیدهای ۱۲۸ بیتی، ۸ دور برای کلیدهای ۱۹۲ بیتی و ۹ دور برای کلیدهای ۲۵۶ بیتی بودهاست. برخی از رمزنگاران در مورد امنیت AES اظهار نگرانی میکنند آنها معتقدند که حاشیه امنیت (فاصله بین دورهای الگوریتم و دورهای لازم برای شکستن رمز کم است. هم چنین این خطر وجود دارد که با پیشرفت الگوریتمهای ذکر شده این الگوریتمها بتوانند رمز را با زمانی کمتر از زمان لازم برای جستجوی جامع در فضای کلید بشکنند. شکستن یک کلید ۱۲۸ بیتی به ۲۱۲۰ عمل نیاز دارد که در مقایسه با ۲۱۲۸ بسیار کم است که امروزه کاملاً غیرممکن و غیر عملی است. بزرگترین حمله که با استفاده از جستجوی جامع روی فضای کلید صورت گرفتهاست منجر به شکستن کلید RC5 شصت و چهار بیتی شدهاست. پس در این مورد، جای نگرانی وجود ندارد. بقیه تردیدهایی که در مورد این الگوریتم وجود دارد راجع به ساختار ریاضی AES است. بر خلاف اکثر الگوریتمهای رمزقطعهای، AES یک تعریف جبری مرتب دارد. این ساختار، تاکنون منجر به هیچ حملهای نشدهاست. ولی برخی از محققان میگویند که ایجاد یک رمز بر مبنای فرضیات سخت جدید، به دور از ریسک نیست. در سال ۲۰۰۲ یک حمله تئوریکی به نام حمله XSL توسط Nicolas Courtois و Josef Pieprzyk مطرح شد. این دو نفر اعلام کردند که در این الگوریتم ضعفهایی وجود دارد. چندین متخصص رمزشناسی مشکلاتی را درساختار ریاضی حمله پیشنهاد شده، کشف کردند و اعلام کردند که مخترعان این حمله احتمالاً در تخمینهای خود دچار اشتباه شدهاند. اینکه آیا حمله XSL میتواند علیه AES عمل کند یا نه، سؤالی است که هنوز به آن پاسخی داده نشدهاست؛ ولی احتمال اینکه این حمله بتواند در عمل انجام شود بسیار کم است
در این پروژه فرایند استفاده از کلید رو تغییر دادم و کلید بصورت ارایه ای از بایتها تولید میشه این کار یک حسن و یک عیب داره
در شکلی که کلید بصورت رندوم باشه بازگشایی رمز همان لحظه انجام میشه و در صورتیکه برنامه دوباره اجرا بشه بازگشایی امکانپذیر نخواهد بود اما در صورتیکه کلید ها بصورت مقادیر ثابت ارایه شوند بازگشایی بعد از تغییر متن cipher نیز امکانپذیر هست بحرحال هر کدام کاربرد خودشو داره
byte[] txtencod = new byte[2048];
txtencod = ASCIIEncoding.ASCII.GetBytes(Decrypt);
AesCryptoServiceProvider aesEncod = new AesCryptoServiceProvider();
aesEncod.BlockSize = 128;
aesEncod.KeySize = 256;
aesEncod.IV = new byte[128/8];
aesEncod.Key = new byte[128/8];
aesEncod.Mode = CipherMode.CBC;
aesEncod.Padding = PaddingMode.PKCS7;
ICryptoTransform icryp = aesEncod.CreateEncryptor(aesEncod.IV,aesEncod.IV);
byte[] Entobyte = icryp.TransformFinalBlock(txtencod,0,txtencod.Length);
icryp.Dispose();
return Convert.ToBase64String(Entobyte);
,aes,در سی شارپ ,سورس سی شارپ ,رمزنگاری متقارن,رمزنگاری ریندال,رمزنگاری نامتقارن
برای ارسال نظر شما باید ابتدا وارد حساب کاربری خود شوید.
نظرات