بخش سوم مبانی امنیت اطلاعات - رمزنگاری OTP

Information_Security

در مقاله‌ی قبلی مبحث رمزنگاری را شروع کردیم. پس از آشنایی با تعاریف اولیه در رمزنگاری حالا در این مقاله قصد داریم به شرح روش رمزنگاری One Time Pad بپردازیم. این شیوه‌ی رمزنگاری از معدود روش‌‌های رمزنگاری است که ایمن بودن آن قابل اثبات است.

در مقاله‌ی قبلی از مجموعه‌ی آشنایی با مبانی امنیت اطلاعات با تعاریف پایه‌ای در رمزنگاری آشنا شدیم. به خاطر دارید که مرتضی می‌خواست پیامی برای بانک جعفر ارسال کند اما به این دلیل که ممکن بود جواد پبام‌ها را شنود کند باید با استفاده از یک روش رمزنگاری پیام خود را به صورت رمزگذاری شده ارسال می‌کرد. برای این کار روش رمزنگاری جانشینی را مرور کردیم و دیدیم که با استفاده از روش‌های تحلیل رمز چطور می‌شود این رمزنگاری را شکست. در این مقاله رمزنگاری One Time Pad را شرح می‌دهیم. روش رمزنگاری‌ای که ایمن بودن آن اثبات شده است.

مرتضی که به تازگی به عنوان جاسوس در آلمان نازی مشغول به کار شده است می‌خواهد پیامی را به صورت رمزگذاری شده برای جعفر که مسئول بالادستی اوست بفرستد. او می‌خواهد برای رمزگذاری پیام خود از رمزنگاری One Time Pad استفاده کند. جواد نیز که جاسوس اتحاد جماهیر شوروی است قصد دارد پیام را شنود کند و رمز را بشکند.

مرتضی، جعفر و جواد

برای این که کارمان ساده‌تر باشد فقط اولین قسمت از پیام مرتضی را در نظر می‌گیریم. این پیام با عبارت heilhitler شروع می‌شود. برای استفاده از رمزنگاری One Time Pad به هرکدام از حروف یک کد مبنای دو (binary) نسبت می‌دهیم. چون در این مثال تنها با ۸ حرف از حروف الفبا سر و کار داریم می‌توانیم یک کد ۳ بیتی به شکل زیر به هرکدام از حروف نسبت دهیم.

کدهای مبنای دوی نسبت داده شده به حروف

این کدها صرفا نگاشتی از حروف الفبا روی رشته‌های سه بیتی را به دست می‌دهند و نباید محرمانه باشند. کاربرد آن‌ها در اینجا چیزی شبیه به کاربرد کدگذاری ASCII است. در مقاله‌ی قبلی گفتیم که در یک شیوه‌ی رمزنگاری غیر از کلید رمزنگاری هیچ چیز محرمانه‌ای نباید وجود داشته باشد. این موضوع را با عنوان اصل کرکهوف معرفی کردیم. به این ترتیب پیام مرتضی (عبارت heilhitler) تبدیل به رشته‌ی بیتی زیر می‌شود:

001 000 010 100 001 010 111 100 000 101

-

رمزنگاری One Time Pad چگونه کار می‌کند؟

حالا مرتضی باید با استفاده از رمزنگاری One Time Pad پیام خودش را رمزگذاری کند. برای این کار به یک کلید نیاز داریم که طول آن دقیقا به اندازه‌ی طول پیام باشد. این کلید باید به طور تصادفی انتخاب شود. مرتضی از رشته‌ی بیتی زیر به عنوان کلید استفاده می‌کند:

111 101 110 101 111 100 000 101 110 000

-

در شیوه‌ی رمزنگاری One Time Pad برای تولید متن رمزگذاری شده یا Cipher Text متن ساده (Plain Text) را با کلید رمزنگاری XOR می‌کنیم. یکی از ویژگی‌های عملیات XOR این است که:

a XOR b XOR b = a

به همین دلیل اگر متن رمزگذاری شده (Cipher Text) با کلید رمزنگاری XOR شود حاصل عملیات متن ساده (Plain Text) خواهد بود. به این ترتیب شیوه‌ی رمزگذاری (Encryption) و رمزگشایی (Decryption) دقیقا مشابه هم است.

پس پیام مرتضی به این صورت رمزگذاری خواهد شد:

Encryption with One Time Pad

پیام رمزگذاری شده یعنی عبارت s r l h s s t h s r به صورت کاملا ایمن می‌تواند منتقل شود، بدون این که شنود کننده‌ی پیام بتواند چیزی از محتوای پیام بداند. کسی که پیام را شنود می‌کند تنها می‌تواند به طول پیام اصلی پی ببرد که البته این مشکل نیز با استفاده از روش‌های خلاقانه‌ای می‌تواند برطرف شود.

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

Decryption with One Time Pad

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

101 111 000 101 111 100 000 101 110 000

-

Decryption with wrong key in One Time Pad.png

همان طور که دیدید حاصل به جای عبارت heilhitler عبارت killhitler می‌شود. بدون دانستن کلید هر عبارتی با طول مشابه به احتمالی دقیقا یکسان می‌تواند پیام اصلی باشد. در نتیجه بدون دانستن کلید و با در دست داشتن پیام رمزگذاری شده هیچ حدسی در مورد پیام اصلی نمی‌توان زد. این یعنی این شیوه‌ی رمزگذاری کاملا ایمن است. اما به شرط این که از هر کلید تنها یک بار استفاده شود.

چرا کلید رمزنگاری One Time Pad یک بار مصرف است؟

فرض کنید دو پیام P1 و P2 هر دو با کلید K رمزگذاری شده باشند.

C1 = P1 XOR K

C2 = P2 XOR K

C1 XOR C2 = P1 XOR K XOR P2 XOR K = P1 XOR P2

عبارت بالا نشان می‌دهد که در صورتی که از یک کلیدرمزنگاری دوبار استفاده شود می‌توان به اطلاعاتی درباره‌ی پیام اصلی پی برد. در این صورت کافیست تنها بخشی از یکی از پیام‌ها لو برود یا به درستی حدس زده شود تا به این ترتیب رمزنگاری شکسته شود و اطلاعات بیشتری درباره‌ی پیام‌های اصلی بدون داشتن کلید به دست بیاید. مثلا اگر دو عبارت kite و like هر دو با یک کلید رمزگذاری شوند:

like.png

kite.png

فردی که پیام‌ها را شنود می‌کند می‌تواند حدس بزند حروف دوم و چهارم هر دو پیام مشابه هستند. با فاش شدن جزئیاتی از پیام‌ها شکستن رمزنگاری می‌تواند به سادگی حل کردن جدول باشد.

چرا رمزنگاری One Time Pad برای کاربردهای امروز قابل استفاده نیست؟

دیدیم که لازم است کلید رمزنگاری در شیوه‌ی رمزنگاری One Time Pad هربار تغییر کند و همچنین طول این کلید باید به اندازه‌ی پیام اصلی باشد. انتخاب کلیدی با این طول در کاربردهای امروزی که با داده‌های بسیار بزرگ سر و کار داریم عملا بسیار چالش برانگیز است و انتقال کلیدی به این بزرگی آن هم برای هر پیام به صورت ایمن در عمل شدنی نیست. بنابراین این روش رمزنگاری اگرچه ایمنی بسیار مطلوبی را ارائه می‌کند اما در بیشتر کاربردهای امروزی قابل استفاده نیست. اما دانستن آن به درک شیوه‌های رمزنگاری امروزی که مورد استفاده قرار می‌گیرند کمک می‌کند.

یافته‌هایتان را به چالش بکشید

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

در مقاله‌ی بعدی شیوه‌های رمزنگاری که در دنیای کامپیوتر امروزه به کار گرفته می‌شوند را بررسی خواهیم کرد و با نحوه‌ی کار آن‌ها آشنا خواهیم شد.

myAvatar.png

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

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


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

ثبت نظر