موضوع مقاله: بلوفیش | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # بلوفیش | مقدمه: بلوفیش (Blowfish) یک شیوه رمزنگاری بر پایه استفاده از کلید رمز و یک رمزگذاری قطعه‌ای متقارن است که در سال ۱۹۹۳ توسط بروس اشنایر طراحی و در بسیاری از مجموعه‌های رمزنگاریی و محصولات رمزگذاری گنجانده شد. | ## بخش 1: بلوفیش | بلوفیش نرخ رمزگذاری خوبی را در نرم‌افزار ارائه می‌دهد و تا امروز هیچ تحلیل رمز موثری بر روی آن پیدا نشده‌است. شینر بلوفیش را به عنوان یک الگوریتم همه منظوره به عنوان جایگزینی عاری از مشکل و محدودیت‌های برقراری ارتباط با الگوریتم‌های دیگر، برای استاندارد رمزنگاری داده‌ها قدیمی طراحی کرد. زمانی که بلوفیش منتشر شد بسیاری از طرح‌های دیگر گرفتار قانون ثبت اختراع بودند یا جز اسرار تجاری-دولتی محسوب می‌شدند. شینر اعلام کرد که، "بلوفیش ثبت نشده‌است، و در تمام کشورها این گونه باقی خواهد ماند. بدینوسیله الگوریتم در مالکیت عمومی قرار می‌گیرد و توسط هرکسی می‌تواند آزادانه استفاده شود." خصوصیات قابل توجه این طراحی شامل کلید- وابسته به s-box و یک زمانبند کلید بسیار پیچیده‌است. آخرین طراحی از یک ماشین یک میلیون دلاری که توانست کلید دی‌ای‌اس را تنها در ۳٫۵ ساعت بازیابی کند تنها آنچه را که همگان می‌دانستند بیان کرد: اندازه کلید دی‌ای‌اس برای امروز بسیار کوچک است. دنیا تنها به این دلیل نسبتاً به دی‌ای‌اس اطمینان دارد که توانست از بررسی ان‌اس‌ای جان سالم بدر ببرد. متخصصان از این جهت به دی‌ای‌اس اطمینان دارند که یک استاندارد منتشر شده‌است، و همچنین توانسته‌است طی ۲۰ سال از تحلیل رمزهای شدید رمزگذاران در سراسر جهان نجات پیدا کند. دنیای رمزنگاری این چنین است: میزان اعتماد به یک الگوریتم هنگامی افزایش می‌یابد که هر گروه از پی گروه دیگر برای شکستن آن تلاش کنند و شکست بخورند. کاندیدهای جایگزینی مدام در حال ظهروند اما هیچ نتوانسته‌اند توجه زیادی را به خود جلب کنند. همچنین دسته‌ای از الگوریتم‌های ثبت نشده‌ای که در حال اجرا هستند: RC4 (در ابتدا یک راز تجاری شرکت امنیت داده RSA بود اما اکنون در اینترنت در دسترس عموم قرار دارد)، SAFER، و بلوفیش. شرح بلوفیش بلوفیش یک رمزنگاری قطعه‌ای است که داده‌ها در فطعه‌های ۸ بایتی رمز می‌کند. بسط کلید یک کلید با طول متغیر و حداکثر ۵۶ بایت (۴۴۸بیت) را به آرایه‌ای از چندین زیرکلید مجموعاً ۴۱۶۸بایت، تبدیل می‌کند بلوفیش 16 دور دارد. این روش یک رمزنگاری فیستل ۱۶ دوره‌است و از کلید بزرگی وابسته به s-box استفاده می‌کند. | ## بخش 2: بلوفیش | P1 را با ۳۲ بیت اول کلید یای مانعةالجمع می‌کنیم، P2 را با ۳۲ بیت دوم، و همین‌طور تا آخر برای تمام بیت‌های کلید (احتمالاً تا P14). (برای هر کلید کوتاه، حداقل یک کلید بلندتر هم ارز وجود دارد؛ برای مثال، اگر A یک کلید ۶۴ بیتی باشد، آنگاه AA, AAA و… کلیدهای هم ارز هستند) ۳. رشته‌های تمام صفر را با الگوریتم بلوفیش با استفاده از زیرکلیدهای شرح داده شده در مراحل ۱ و ۲، رمزگذاری می‌کنیم. خروجی مرحله ۳ را با استفاده از الگوریتم بلوفیش با زیرکلیدهای اصلاح شده رمزگذاری می‌کنیم. عملیات را آنقدر ادامه می‌دهیم تا تمام عناصر آرایه پی و پس از آن به ترتیب تمام چهار تا S-box با خروجی مدام در حال تغییر الگوریتم بلوفیش، معاوضه شده باشند. برنامه‌های کاربردی می‌توانند به جای اجرای چندین باره این فرایند اشتقاقی، کلیدهای را ذخیره کنند شکل مقابل نحوه عمل بلوفیش را نمایش می‌دهد. الگوریتم دو آرایه از زیرکلیدها را نگه می‌دارد: یک آرایه پی با ۱۸ ورودی و چهار S-box با ۲۵۶ ورودی. در هر دور یکی از اعضای آرایه پی استفاده می‌شود، و پس از دور آخر، هر نیمه قطعه با یکی از دو عضو باقی‌مانده‌استفاده نشده از اعضای p، یای مانعةالجمع (XOR) می‌شوند. تابع ۳۲ بیت ورودی را به چهار قسمت ۸ بیتی تقسیم می‌کند، و سپس یک چهارم‌ها را به عنوان ورودی s-boxها استفاده می‌کند. خروجی‌ها به هم نهشتی ۲^۳۲ اضافه می‌شوند و برای تولید ۳۲بیت خروجی نهایی XOR می‌گردند. ،P18 به ترتیب معکوس استفاده می‌شوند تحلیل رمز بلوفیش هیچ تحلیل رمز موثری تا سال ۲۰۱۱ بر روی نسخه تمام دور بلوفیش وجود نداشت. برای برخی از کلیدهای ضعیف که S-boxهای ضعیفی تولید می‌کنند(شانس بدست آوردن آن‌ها به‌طور تصادفی ۱ در ۲^۱۴ است)، حمله‌ای مشابه نیازمند تنها 24r+1 متن آشکار انتخاب شده‌است تا بتواند آرایه پی را بازسازی کند(یادآوری می‌کنیم که فرض بر این است که S-boxها مشخص هستند). بدون مشخص بودن S-boxها، این حمله تنها می‌تواند تشخیص دهد که یک کلید ضعیف در حال استفاده‌است، اما نمی‌تواند مشخص کند که چیست (نه S-boxها و آرایه پی و نه خود کلید). این حمله تنها علیه نوع‌هایی با تعداد دور پایین کاربرد دارد؛ این حمله در برابر بلوفیش با ۱۶ دور کاملاً بی‌اثر است. | ## بخش 3: بلوفیش | وینسنت رایمن در پایان‌نامه دکترای خویش، یک حمله دیفرانسیلی مرتبه دوم را معرفی کرد که تنها می‌توانست چهار دور را بشکند و نه بیشتر. جان کلسی حمله‌ای را طراحی کرد که می‌توانست ۳-دور بلوفیش را بشکند اما قادر نبود آن را بسط دهد ویکرا سینگ چابرا به راه‌های مؤثر برای پیاده‌سازی ماشین جستجوی آزمون جامع روی آورده بود. سرج وادنی به بررسی یک نوع ساده از بلوفیش پرداخت که در آن S-box مشخص و مستقل از کلید بود. در این حالت یک حمله تفاضلی می‌تواند آرایه پی را با انتخاب 28r+1 متن آشکار بازسازی کند (r تعداد دورها است). این حمله برای بلوفیش با ۸ دور و بیشتر غیرممکن است، زیرا متون آشکار بیشتر از آنچه که یک رمزنگار قطعه‌ای ۶۴ بیتی بتواند تولید کند، نیاز دارد. نتیجه هیچ کس تاکنون نتوانسته به ایجاد حمله‌ای که بتواند بلوفیش را بشکند نزدیک هم بشود. با این وجود، تحلیل رمزهای بیشتری پیش از آنکه یک الگوریتم را امن بخوانیم مورد نیاز است. بروس شینر اشاره می‌کند در حالیکه بلوفیش هنوز مورد استفاده قرار می‌گیرد، اما او توصیه می‌کند از الگوریتم اخیر توفیش (Twofish) به جای آن استفاده شود. بلوفیش در عمل بلوفیش یک رمزنگاری قطعه‌ای سریع محسوب می‌شود، به جز هنگامیکه کلیدها عوض می‌شوند. هر کلید جدید نیازمند پیش-پردازشی است که معادل رمزگذاری یک فایل متنی تقریباً ۴کیلوبایتی است، که نسبت به دیگر رمزنگاری‌های قطعه‌ای بسیار کند است. این مسئله مانع از استفاده آن در برخی از برنامه‌های کاربردی می‌شود، اما در دیگر برنامه‌ها مشکلی نیست. در یک برنامه کاربردی، این یک مزیت به‌شمار می‌آید: روش درهم سازی رمزعبور که در اپن بی‌اس‌دی استفاده می‌شود از الگوریتمی استفاده می‌کند که از بلوفیش مشتق شده‌است که این موضوع سرعت محاسبات کلید را کاهش می‌دهد؛ ایده این کار این است که تلاش‌های اضافی محاسباتی در برابر حمله واژه‌نامه‌ای حفاظت ایجاد می‌کند. این محدودیت نه تنها مشکلی برای کامپیوترهای قدیمی و لپ‌تاپ‌ها به حساب نمی‌آید، بلکه آن را برای استفاده در کوچک‌ترین سیستم‌های تعبیه شده ای مانند کارت‌های هوشمند اولیه مناسب می‌کند. | ## جمع‌بندی | بلوفیش یکی از اولین رمزنگاری‌های قطعه‌ای امنی بود که ثبت اختراع نشد و به این ترتیب کاملاً رایگان در اختیار همگان برای استفاده قرار گرفت.