رمزنگاری جایگزینی و جایگشتی و جریانی

مقدمه:امروزه برای تامین امنیت و حفاظت از اطلاعات که امر مهمی در تبادل ارتباط و اطلاعات است ،از رمزنگاری استفاده میشود. دسترسی به اطلاعات رمز شده برای افراد غیر مجاز امکان‌پذیر نبوده و صرفاً افرادیکه دارای کلید رمز می‌باشند، قادر به باز کردن رمز و استفاده از اطلاعات هستند. رمز نمودن اطلاعات کامپیوتر مبتنی بر علوم رمزنگاری است. استفاده از علم رمزنگاری دارای یک سابقه طولانی و تاریخی می‌باشد.رمزنگاری عبارت است از بهم ریختگی اطلاعات به‌طوری‌که برای کسی قابل فهم نباشد. فناوری رمزنگاری امکان مشاهده، مطالعه و تفسیر پیام‌های ارسالی توسط افراد غیرمجاز را سلب می‌نماید. از رمزنگاری به منظور حفاظت داده‌ها در شبکه‌های عمومی نظیر اینترنت استفاده می‌گردد. در این رابطه از الگوریتم‌های پیشرفته ریاضی به منظور رمز نمودن پیام‌ها و ضمائم مربوطه، استفاده می‌شود.چکیده:انتقال اطلاعات حساس بر روی یک شبکه نیازمند استفاده از مکانیزمی است که سه ویژگی زیر را پوشش دهد:امنیت: داده ارسالی باید توسط افراد غیر مجاز، قابل خواندن باشد.هویت: فرستنده یا گیرنده اطلاعات همان افرادی باشند که ادعا می‌کنند.صحت اطلاعات: داده دریافت شده در مقصد با داده ارسال شده در مبدا یکسان باشد و اطلاعات دستکاری نشده باشد.در این مطلب سعی بر این شده است که به سه نوع رمزگذاری که هر سه از روش های رمزنگاری متقارن هستند پرداخته شود و در ذیل، روش رمزنگاری هر کدام به اختصار ذکر شده است:1. hill cipher : روش رمزگذاری براساس جبرخطی که یک روش متقارن است و با یک کلید ثابت که ماتریس است در هر دو طرف مبدا و مقصد مورد استفاده قرار می گیرد.2.permutation: روش رمز گذاری بر اساس جابجایی حروف که یک روش متقارن است زیرا توسط یک کلید هم رمزنگاری و هم رمز گشایی انجام می شود.3.Stream cipher: در این روش رمز گذاری مجموعه ای از کلیدها وجود دارد که هر یک از بلاک های ورودی با یک کلید جداگانه از همان مجموعه کلیدهای ذکر شده رمزنگاری می شوند.این روش رمزگذاری یک روش متقارن است که در آن هر بلاک ورودی با کلیدی از مجموعه کلید ها که به خود مربوط است XOR می‌شود و نتیجه را بصورت رمزنگاری تولید میکند.رمزگذاری hillدر این بخش ، رمزنگاری چند قطبی دیگری به نام hill chiper که بر اساس جبر خطی است را شرح می دهیم. این رمزنگاری در سال 1929 توسط لستر هیل هپ اختراع شد. ایده این است که ترکیبات خطی m از حروف الفبا m را در یک plaintext (متن ساده) تهیه کنیم ، بنابراین کاراکتر های الفبای m را در یک cipher text تولید می کنیم. روش اجرای این رمزگذاری نیازمند رعایت دو مورد است:الف) هر حرف انگلیسی به ترتیب با عددی صحیح بین 0 تا 25(A=0; B=1; C=2; ...) جایگزین می‌شود.ب) متن در قالب گروهای n حرفی به n حرف جدید نگاشته می‌شوند.چگونگی عملکرد روش رمزنگاری hill(رمزگذاری و رمز گشایی):در اینجا کلید یک ماتریس در نظر گرفته شده است و ما از ورودی ها mod 26 میگیریم تا اطلاعات را در دامنه مجموعه ورودی هایمان(حروف انگلیسی که با اعداد 0 تا 25 جایگزین میشوند) قرار دهیم.کلید باید یک ماتریس قابل تبدیل باشد یعنی ضرب ماتریس در وارونش برابر یک باشد یا بعبارتی دیگر ماتریس اولیه یا همان ماتریس کلید وارون پذیر باشد تا بتوان در زمان رمزگشایی از آن استفاده کرد.مثال:برای رمزنگاری کلمه HILL :ماتریس کلیدتک تک حروف را به اعداد بین 0 تا 25 نگاشت کرده و اعداد را استخراج میکنیم و سپس مقادیر بدست آمده را به ترتیب در یک ماتریس 2*1 قرار میدهیمH I L L7 8 11 11(7 , 8) و (11 , 11)2. ماتریس های بدست آمده در مرحله دوم را در ماتریس اولیه ضرب نموده و مقادیر بدست آمده را در mod 26 ساده می نماییم:3.مقادیر بدست آمده را به اعداد انگلیسی نگاشت میکنیم: 23 ,8 , 24 , 9X I Y Jرشته ی XYIJ حاصل محاسبات انجام شده و خروجی این مرحله است.رمز گشایی برای کلمه XYIJبرای این مرحله نیازمند وارون ماتریس کلید هستیم که در ادامه نحوه بدست آوردنآن را شرح می دهیم.دریافت کننده پیام با در دست داشتن این ماتریس میتواند ماتریس اولیه را استخراج کند.روش بدست آوردن ماتریس معکوس:1.ابتدا ماتریس اولیه را در قالب روبر قرار میدهیم محاسبه میکنیم:2.سپس برای از بین رفتن علامت منفی اعداد دارای علامت منفی را در mod 26 بدست می آوریم:-8mod 26=18-3mod26=23پس ماتریس معکوس برابر :حال نوبت رمز گشایی میشود: به اینصورت که حروف در یافت شده را به اعداد تبدیل میکنیم:X I Y J23 ,8 , 24 , 9سپس مقادیر بدست آمده را به ترتیب در یک ماتریس 2*1 قرار میدهیم(23,8) و (24 ,9)سپس وکتورهای بدست آمده را در وارون بدست آمده ضرب می کنیم و یک ماتریس 2*1 بدست می آید که با قرار دادن اعداد در mod 26 می توان اعداد را بر حروف انگلیسی نگاشت کرد و متن ورودی بدست می آید.⇏برای حالتی که بخواهیم کلید را بدست آوریم می توانیم از طریق متن ورودی (plain text ) و متن رمزنگاری شده (ciphertext ) یک دستگاه دو معادله دو مجهول تشکیل داده و مسئله را حل کنیم که در صورت پیچیده شدن میتوان با روش حدس زنی مجهول ها را بدست آوریم.این نوع رمزنگاری متقارن است چرا که از یک کلید مشابه در هر دو سمت فرستنده و گیرنده استفاده می شود.رمز گذاری permutationدر این نوع از روش های رمزنگاری ترتیب حروف و کلمات بهم میخورد.که این کار توسط یک کلید انجام می شود.طوری که به اندازه تعداد عناصر کلید از متن plaintext حروف را انتخاب کرده و جدا میکنیم .کلید نحوه ی جایگشت حروف از plaintext به کدام index را مشخص میکند(یعنی عناصر کلید جایگاهی را که هر حرف باید قرار بگیرد را نشان می دهد )مثلا:plaintext= permutationkey=1 3 2 4 0Selected: permup(0) key(1)e(1) key(3)r(2) key(2)m(3) key(4)u(4) key(0)Result: upremSelected: tatiot(0) key(1)a(1) key(3)t(2)key(2)i(3) key(4)o(4)key(0)Result: ottaiSelected: n_ _ _ _ (خط تیره بجای حروفی که موجود نیستند)n(0) key(1)(1) key(3)(2) key(2)(3) key(4)(4)key(0)Result: -n---امنیت روش permutation:چون در این روش تمام حروف در متن رمز گذاری موجود است بنابراین شکستن رمز کار سختی نخواهد بود هر چند که این روش نیاز به پردازش بالایی دارد ولی در نهایت قابل شکستن است.Rotor machinesروتر ماشین ها یک سری ماشین با تعدادی چرخ گردان هستند که این روتر ماشین ها نیز با استفاده از روش permutation ، جایگشت های متفاوتی از plaintext ایجاد می کنند و سپس با چرخش هر یک از این چرخ گردان ها رمزنگاری با روش shift نیز انجام می دهند.طوری که اگر 3 چرخ گردان داشته باشیم به ازای چرخش روتر اول یکبار روتر دوم میچرخید و اگر روتر دوم کامل بچرخد روتر سوم یکبار می چرخد.پس این ماشین ها ترکیبی از روش permutation و shift است.روش رمزنگاری streamدر الگوریتم‌های رمزنگاری Stream Cipher به جای استفاده از یک کلید رمزنگاری که به اندازه‌ی طول پیام باشد، از یک تابع استفاده می‌شود که وظیفه‌ی آن این است که با استفاده از کلیدی که طول کوتاه‌تری دارد، یک کلید رمزنگاری با طولی به اندازه‌ی طول پیام ایجاد کند.شیوه‌ی کار همه‌ی الگوریتم‌های رمزنگاری Stream Cipher به این صورت است که با در اختیار داشتن کلید نسبتا کوتاه K، کلید رمزنگاری S که طول آن با طول پیام برابر است تولید می‌شود. این روش در الگوریتم‌های مختلف خانواده‌ی Stream Cipher متفاوت است و پس از آن برای به دست آوردن متن رمزنگاری شده (Ciphertext) عمل XOr روی پیام ساده و کلید S انجام می‌شود.Kstreamیک جریانی از کلیدهاست که بجای اینکه برای تمام بلاک ها کلید ثابت استفاده شود(مثل block cipher) ،به ازای هر بلاک از plaintext کلید متغیر است و حتی ممکن است چندین کلید تولید شود.Formally ,y=y1 ,y2,y3,.......=ek1(x1) ek2(x2) ek3(x3) ….یعنی ایجاد یک ciphertext ای متشکل از y ها باید نتیجه رمزگذاری هر بخش از ورودی ها(X i) با کلید مربوط به آن eki باشد.خروجی stream cipher:y 1=x 1 y 1 ; Y 2=x 2 y 2; Y 3=x 3 y 3 ,.....LFSR(Linear Feedback Shift Register)یک رجیستری تغییر است که بیت ورودی آن یک تابع خطی از حالت قبلی آن است متداول ترین عملکرد خطی بیت های انحصاری یا (XOR) است. بنابراین ، LFSR اغلب رجیستری شیفتی است که بیت ورودی آن توسط XOR برخی از بیت های ارزش ثبت کلی شیفت هدایت می شودمقدار اولیه LFSR به عنوان دانه(seed) نامیده می شود و از آنجا که عملکرد رجیستری قطعی است ، جریان مقادیر تولید شده توسط رجیستری با وضعیت فعلی (یا قبلی) آن مشخص می شود. به همین ترتیب ، زیرا رجیستر دارای تعداد محدودی از حالتهای ممکن است ، در نهایت باید وارد چرخه تکراری شود. با این حال ، یک LFSR با عملکرد بازخورد به خوبی انتخاب شده می تواند توالی از بیت ها را ایجاد کند که تصادفی به نظر می رسد و دارای یک چرخه بسیار طولانی است .کاربردهای LFSR شامل تولید اعداد شبه تصادفی ، توالی شبه سر و صدا ، پیشخوان دیجیتالی سریع و توالی های سفید کننده است . اجرای هر دو سخت افزار و نرم افزار LFSR رایج است.ریاضیات یک بررسی افزونگی چرخه ای ، که برای ارائه سریع چک در برابر خطاهای انتقال مورد استفاده قرار می گیرد ، نزدیک به موارد مربوط به LFSR است.