بخش چهارم مبانی امنیت اطلاعات - رمزنگاری Stream Cipher

Information_Security

در مقاله قبلی از مجموعه مقاله‌های مبانی امنیت اطلاعات با شیوه‌های رمزنگاری آشنا شدیم. در این مقاله به رمزنگاری متقارن می‌پردازیم و الگوریتم رمزنگاری A5/1از دسته‌ی Stream Cipher را بررسی می‌کنیم.

پس از آشنایی با کلیات دانش رمزنگاری و بررسی روش One Time Pad در ادامه‌ی مجموعه مقالات مبانی امنیت اطلاعات می‌خواهیم به الگوریتم‌های رمزنگاری که در دنیای واقعی استفاده می‌شوند بپردازیم و روش کار آن‌ها را بررسی کنیم. الگوریتم‌های رمزنگاری با کلید متقارن را می‌توان به دو دسته‌ی Stream Cipher و Block Cipher تقسیم کرد. در این مقاله به شرح الگوریتم‌های دسته‌ی Stream Cipher می‌پردازیم و دو الگوریتم مبتنی بر این روش را بررسی می‌کنیم.

الگوریتم‌های رمزنگاری Stream Cipher

این دسته از الگوریتم‌های رمزنگاری با الهام گرفتن از روش One Time Pad ایجاد شده‌اند.

در این مقاله با رمزنگاری One Time Pad بیشتر آشنا شوید.

اشکالی که در روش one time pad وجود داشت این بود که طول کلید رمزنگاری باید با طول پیام برابر می‌بود و به همین دلیل استفاده از آن در کاربردهای امروزی عملا ممکن نبود. در الگوریتم‌های رمزنگاری Stream Cipher به جای استفاده از یک کلید رمزنگاری که به اندازه‌ی طول پیام باشد، از یک تابع استفاده می‌شود که وظیفه‌ی آن این است که با استفاده از کلیدی که طول کوتاه‌تری دارد، یک کلید رمزنگاری با طولی به اندازه‌ی طول پیام ایجاد کند. به این ترتیب امنیت قابل اثبات در شیوه‌ی One Time Pad که در مقاله‌ی قبل به آن اشاره شد در این روش‌ها به دلیل استفاده از کلیدی با طول کوتاه‌تر وجود ندارد.

برای آشنایی با مقدمات دانش رمزنگاری این مقاله را مطالعه کنید.

شیوه‌ی کار همه‌ی الگوریتم‌های رمزنگاری Stream Cipher به این صورت است که با در اختیار داشتن کلید نسبتا کوتاه K، کلید رمزنگاری S که طول آن با طول پیام برابر است تولید می‌شود. این روش در الگوریتم‌های مختلف خانواده‌ی Stream Cipher متفاوت است. پس از آن مانند روش One Time Pad برای به دست آوردن متن رمزنگاری شده (Ciphertext) عمل XOr روی پیام ساده و کلید S انجام می‌شود.

در این مقاله به بررسی الگوریتم رمزنگاری A5/1 می‌پردازیم که یکی از پر کاربرد‌ترین الگوریتم‌های رمزنگاری خانواده Stream Cipher است.

الگوریتم رمزنگاری A5/1

از الگوریتم A5/1 برای حفظ محرمانگی (Confidentiality) در شبکه‌ی موبایل GSM استفاده می‌شد. این الگوریتم به گونه‌ای طراحی شده است که برای پیاده‌ سازی سخت افزاری مناسب است. برای به کار گرفتن این الگوریتم از سه رجیستر انتقال خطی بازخوردی (Linear Feedback Shift Register) استفاده می‌شود که آن‌ها را X، Y و Z می‌نامیم. رجیستر X تعداد ۱۹ بیت را در خود نگه می‌دارد. (x0, x1, ..x18). به همین ترتیب ۲۲ بیت در رجیستر Y و ۲۳ بیت در رجیستر Z ذخیره می‌شوند و این سه رجیستر مجموعا ۶۴ بیت داده را ذخیره می‌کنند. در الگوریتم رمزنگاری A5/1 کلید رمزنگاری K نیز ۶۴ بیت است که به عنوان مقدار اولیه در این رجیستر‌ها ذخیره می‌شود. پس از این که K در این سه رجیستر ذخیره شد می‌توانیم کلید S را با استفاده از آن تولید کنیم. اما پیش از این کار باید کمی بیشتر درمورد رجیسترها بدانیم.

با هر گام در رجیستر X عملیات زیر اتفاق می‌افتند:

t=x13 XOR x16 XOR x17 XOR x18

xi = xi-1 for i=18,17,..., 1

x0 = t

به همین صورت مقدار t برای رجیستر Y برابر با:

t=y20 XOR y21

و برای رجیستر Z برابر با:

t=z7 XOR z20 XOR z21 XOR z22

خواهد بود. همچنین تابع

maj(x,y,z)

را برای سه بیت x,y و z به این صورت تعریف می‌کنیم که اگر تعداد بیشتری از ورودی‌ها برابر 0 بودند مقدار 0 برمی‌گرداند و اگر تعداد بیشتری از ورودی‌ها برابر با ۱ بودند مقدار ۱ را برمی‌گرداند. از آنجا که تعداد ورودی ها فرد است این تابع همواره حتما یک مقدار مشخص و قطعی را برمی‌گرداند.

در الگوریتم رمزنگاری A5/1 برای به دست آوردن هر بیت از S عملیات زیر انجام می‌شود.

ابتدا مقدار m به این صورت محاسبه می‌شود:

m = maj(x8,y10,z10)

پس از آن با شرط ذیل حداقل دو رجیستر به اندازه‌ی یک گام منتقل می‌شوند:

اگر x8 = m : رجیستر x یک گام منتقل می‌شود.

اگر y10 = m : رجیستر y یک گام منتقل می‌شود.

اگر z10 = m : رجیستر ظ یک گام منتقل می‌شود.

در نهایت یک بیت از کلید S به صورت زیر به دست می‌آید:

s=x18 XOR y21 XOR z22

با انجام عملیات XOR روی این بیت و یک بیت از P یا C به ترتیب C یا P به دست می‌آیند. این عملیات برای تمام بیت‌های پیام مجددا تکرار می‌شود.

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

A51

در شکل بالا عملیاتی که طی آن یک بیت از s را به دست می‌آوریم نشان داده شده است.

این الگوریتم در دوره‌ای که سرعت پردازنده‌ها به اندازه‌ی امروز افزایش نیافته بود برای رمزنگاری جریان سریع داده‌ها مانند داد‌ه‌های صوتی در سیستم تلفن همراه GSM کاربرد زیادی داشت. در آن زمان روش‌های رمزنگاری بر پایه نرم‌افزار هنوز امکان این را نداشتند که با سرعت کافی بیت‌های مورد نیاز را تولید کنند.

منبع خبر: فیسیت

myAvatar.png

سروش غفاری - برنامه نویس و نویسنده

مهندسی فناوری اطلاعات خوانده‌ام و امنیت اطلاعات. برنامه‌نویسی می‌کنم و می‌نویسم. علاقه‌مندم به عکاسی و نوشتن و داستان. نظرات، انتقادها و پیشنهادهای شما را هم در آدرس ایمیل ghaffari.soroosh@gmail.com یا در بخش نظرات پذیرا هستم.


0 نظر درباره‌ی این پست نوشته شده است.

ثبت نظر