رمز نگاری انتقالی (shift cipher) و رمزنگاری جایگزینی (substitution cipher)

رمز گذاری انتقالی(Shift Cipher) :

مقدمه :

رمز گذاری انتقالی ( Shift Cipher ) یک روش بسیار ساده رمز گذاری است که در گذشته بسیار استفاده شده است. مزیت این روش سادگی آن است که این سادگی باعث می شود شکستن رمز متن هایی که به این روش رمزنگاری شده اند راحتتر باشد و همین سادگی به نوعی بزرگترین عیب آن نیز محسوب می شود.

تاریخچه :

Caesar cipher
Caesar cipher


یکی از نمونه های استفاده از این روش، رمز سزار (Caesar cipher) است که حالت خاصی از shift cipher می باشد. ژولیوس سزار ( سردار رومی) برای رمزگذاری پیام های نظامی از این روش استفاده می کرد. او هر حرف متن پیام را با سه حرف قبل از آن عوض می کرد. مثلا حرف D را با A ، حرف E را B و … عوض می کرد. کسی که پیام را دریافت می کرد، باید حروف را با حرف الفبایی که 3 تا با آن حرف فاصله دارد عوض می کرد.(A را D و B را E و …) دشمنان سزار هنگام مشاهده ی پیام رمزگذاری شده تصور می کردند که پیام به یک زبان نامشخص نوشته شده و نمی توانستند آن را رمزگشایی کنند.

حتی در اواخر ۱۹۱۵رمز سزار مورد استفاده بود. روش های رمزگذاری پیچیده تر برای فرماندهان ارتش روسیه بیش از حد سخت بود. بنابراین ارتش روسیه از shift cipher استفاده می کرد. البته این باعث می شد که آلمان ها بتوانند به راحتی پیام های آنان را رمزگشایی کنند.

نحوه رمز گذاری :

روش رمز گذاری به این نحو است که یک کلید (k) وجود دارد. هر حرف الفبای انگلیسی با حرفی که به اندازه k از آن جلوتر است جایگزین می شود. در ادامه بیشتر این روش را توضیح می دهیم.

در کل 26 حرف انگلیسی داریم که به هر کدام یک عدد نسبت می دهیم:

A := 0 , B := 1 , C := 2 , ... , Y := 24 , Z := 25

از این پس هر حرف الفبا را با استفاده از عدد متناظر آن نشان می دهیم.

یک کلید رمز گذاری بین 0 تا 25 داریم که با K نشان می دهیم.

هر حرف در متن ورودی را با استفاده از رابطه ی زیر جایگزین می کنیم تا یک حرف رمز شده به دست بیاید :

Y = e(x) = (x + K) mod 26

مثلاً رمز شده ی حرف E با کلید K=12 حرف Q می باشد یا رمز شده ی حرف X با کلید K=7 حرف E می باشد.

نحوه رمزگشایی :

با داشتن کلید و متن رمز شده، با استفاده از رابطه ی زیر حروف متن اصلی به دست می آیند :

x = d(Y) = (x - K) mod 26

مثلاً با کلید K=10 و دریافت حرف B به عنوان متن رمز شده(Cipher text)، متن اصلی(Plain text) متناظر با B بعد از رمزگشایی W به دست می آید.

آنالیز متن رمز شده (Crypt-analysis):

می خواهیم بررسی کنیم که با داشتن متن رمز شده و بدون داشتن کلید چگونه می توان متن اصلی را به دست آورد.

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

حداکثر تعداد کلیدی که باید امتحان کنیم و حداکثر تعداد دفعاتی که نیاز است متن را رمزگشایی کنیم 26 بار است. واضح است که این عدد بسیار پایین است و با استفاده از کامپیوتر های امروزی به راحتی می توان رمز را شکست.

به طور کلی این روش، یک روش ساده برای رمزنگاری است و در گذشته کاربرد داشته است؛ اما به دلیل ساده بودن crypt-analysis این روش، شکستن رمز متن هایی که با این روش کد شده اند بسیار راحت است و امروزه کاربردی ندارند.

مراجع :

K.David 1967 The Codebreakers

D.Stinson 2006 Cryptography: Theory and Practice




رمزنگاری جانشینی (Substitution Cipher) :

مقدمه:

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

تاریخچه :

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

a := Z , b := Y , c := X , ... , y := B , z := A

"در این بخش برای خوانایی بهتر الفبای متن ورودی با حروف کوچک و الفبای متن کد شده با حروف بزرگ نوشته شده اند."

کلمه ی abtash نیز از حروف اول و دوم و آخر و یکی مانده به آخر الفبای عبری تشکیل شده است: اَلِف - بِیت ، شین – تاو

نحوه رمز گذاری و رمزگشایی:

همانگونه که در قسمت مقدمه گفته شد، نحوه رمز گذاری به این شکل است که هر حرف الفبا به یک حرف دیگر الفبا نگاشت می شود و تنها یک حرف می تواند به حرفی از الفبا نگاشت شود. کلید این روش رمزنگاری در واقع خود جدولی است که حروف را یه هم نگاشت می کند. به بیان دقیق تر کلید عضو مجموعه تمام توابع یک به یک از مجموعه حروف الفبا به مجموعه حروف همان الفبا می باشد. تعداد این توابع !26 می باشد. مثلا روش abtash خود یک کلید برای روش رمزنگاری جایگزینی می باشد.

از آنجا که مجموعه تمام حالات کلید بسیار بزرگ است، دیگر مثل روشی که در بخش Shift Cipher گفته شد نمی توان متن رمز شده را شکست و امتحان کردن تمام کلید ها و رمزگشایی با استفاده از هر کدام، حتی با کامپیوتر های امروزی امکان پذیر نیست.

آنالیز متن رمز شده (Crypt-analysis):

هر چند در این روش نمی توان تمام کلید های ممکن را امتحان کرد تا به یک متن معنی دار رسید، اما روش دیگری برای یافتن کلید و رمزگشایی Cipher text وجود دارد.

در متون انگلیسی بعضی حروف الفبا بیشتر از بقیه تکرار شده اند و در واقع احتمال وقوع هر حرف در متن مقداری قابل اندازه گیری است. مثلاً حرف e در متون انگلیسی بسیار تکرار می شود. با استفاده از این حقیقت می توان حدس زد در متن رمز شده یکی از حروفی که بیشتر از بقیه تکرار شده اند، احتمالا جایگزین حرف e می باشد. با استفاده از این موضوع فضای حالات مورد بررسی بسیار کوچک تر می شود.

در متون انگلیسی حتی احتمال وقوع دو حرف یا سه حرف پشت سر هم را نیز می توان اندازه گیری کرد. مثلا احتمال وقوع th از هر دو حرف دیگری بیشتر است. این موضوع نیز به ما کمک می کند دوتایی هایی که بیشتر از همه در Cipher text تکرار شده اند را شناسایی کنیم و در نهایت کلید را پیدا کنیم.

این روش نیز با وجود این که از روش Shift Cipher بهتر(امن تر) است، روشی است که منسوخ شده و امروزه کاربرد چندانی ندارد.


اگر به این موضوع علاقمند هستید می‌توانید از این کتاب کمک بگیرید.

D.Stinson 2006 Cryptography: Theory and Practice

این مطلب در راستای درس رمزنگاری و امنیت در دانشگاه تحصیلات تکمیلی علوم پایه زنجان نوشته شده است.