رمزنگاری One-Time Pad؛ امن‌ترین روش رمزنگاری تاریخ

سلام دوستان!
در ادامه سری مطالب موضوع رمزنگاری، این بار می‌خوایم به یکی از جالب‌ترین و در عین حال امن‌ترین روش‌های رمزنگاری بپردازیم.
One-Time Pad یا به اختصار OTP.
این روش با وجود سادگی ظاهری، این ظرفیت رو داره که بهش بگیم رمزنگاری نشکن! 😎 

توجه داشته باشید که به one time password (رمز یکبار مصرف) که برای احراز هویت پیامکی و ایمیلی و… استفاده می‌شه هم میگن otp؛ خلاصه یه وقت با اون اشتباهش نگیرید. اینا یکی نیستن و مفهوم کاملا متفاوتی دارن و ذیل موضوعات متفاوتی هستن.

ماهیت One-Time Pad 

One-Time Pad یه روش رمزنگاری متقارن (یعنی کلید برای رمزنگاری و رمزگشایی استفاده می‌شه) هست که چند تا ویژگی داره.

  1. کلید کاملاً تصادفی و به اندازهٔ پیام تولید می‌شه. (گاهی هم طولانی‌تر از پیام)

  2. هر کلید فقط یک‌بار استفاده می‌شه.

  3. کلید باید کاملاً محرمانه بین فرستنده و گیرنده نگه داشته بشه.

اگر این سه شرط رعایت بشن، OTP امنیت کامل و غیرقابل شکستی رو فراهم می‌کنه. 🔒

نحوه عملکرد

فرض کنید می‌خوایم پیام متنی «HELLO» رو رمزنگاری کنیم.
مراحل به این صورت هست که اول پیام رو به اعداد تبدیل می‌کنیم.
هر حرف به عدد متناظر در جدول ASCII یا حروف الفبا تبدیل می‌شه.
به عنوان مثال:
H به 7
E به 4
L به 11
L به 11  
O به 14
تبدیل می‌شن.
بعد از اون یه رشته تصادفی با همون طول پیام تولید می‌کنیم.
مثلاً
X به 23
M به 12
C به 2
Q به 16 
D به 3
تبدیل می‌شن.

حالا برای رمزنگاری از عملیات XOR (برای رمزنگاری دودویی و باینری) یا جمع مدولار (برای رمزنگاری داده‌های متنی یا عددی ساده) استفاده می‌کنیم. (اگه نمی‌دونید جمع مدولار چیه، توی پست‌های قبل بهش اشاره کردیم و همینطور میتونید راجعش سرچ کنید.)
هر عدد از پیام با عدد متناظر در کلید ترکیب می‌شه.

مثلاً با جمع مدولار 26، جمع 7 و 23 برابر 4 می‌شه که به E تبدیل می‌شه.
جمع 4 و 12 برابر 16 می‌شه که به Q تبدیل می‌شه.
جمع 11 و 2 برابر 13 می‌شه که به N تبدیل می‌شه.
جمع 11 و 16 برابر 1 می‌شه که به B تبدیل می‌شه.
جمع 14 و 3 برابر 17 می‌شه که به R تبدیل می‌شه.
در نهایت، پیام رمزنگاری‌شده می‌شه EQNBR.

برای رمزگشایی، گیرنده با داشتن همون کلید، عملیات معکوس رو انجام می‌ده.
مثلاً (4 – 23) mod 26 برابر 7 می‌شه که دوباره به H تبدیل می‌شه.

میزان امنیت

Claude Shannon، پدر نظریهٔ اطلاعات، ثابت کرده که اگر کلید کاملاً تصادفی باشه، فقط یک‌بار استفاده بشه و به اندازه پیام باشه، اون وقت OTP امنیت کامل داره و هیچ اطلاعاتی از پیام اصلی از روی متن رمزنگاری‌شده قابل استخراج نیست. حتی با بی‌نهایت قدرت محاسباتی! 

کلاد شانون با استفاده از ملاحظات نظریه اطلاعات ثابت کرد پد یکبار مصرف دارای خاصیتی است که او به آن نام امنیت کامل را داد. این به این معنی است که متن رمز شده C دقیقا هیچ اطلاعات اضافه‌ای در مورد متن اصلی نمی‌دهد. این به این دلیل است که با استفاده از یک کلید واقعا رندوم که فقط یکبار استفاده می‌شود، یک متن رمز شده می‌تواند به هر نوع متن اصلی با همان طول تبدیل شود و همه آنها به طور یکسان ممکن هستند. در نتیجه احتمال پیشین از متن اصلی M با احتمال پسین از متن اصلی M که که هر دو یک متن رمز شده را بدهند، برابر است. (ویکی‌پدیا)

تاریخچه

ایدهٔ OTP اولین بار در سال 1882 توسط Frank Miller برای تلگراف مطرح شد.
در سال 1917، Gilbert Vernam و Joseph Mauborgne نسخهٔ عملیاتی OTP رو توسعه دادن و ثبت اختراع کردن. در طول جنگ جهانی دوم، سازمان‌های اطلاعاتی مانند SOE بریتانیا از OTP برای ارتباطات محرمانه استفاده می‌کردن. همچنین در دوران جنگ سرد، خط تلفن مستقیم بین کاخ سفید و کرملین با استفاده از OTP محافظت می‌شد.

محدودیت‌ها

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

One-Time Pad با وجود سادگی، یکی از امن‌ترین روش‌های رمزنگاریه که بشر تا الان ابداع کرده.
هرچند در عمل به‌دلیل مشکلات توزیع و مدیریت کلید کمتر استفاده می‌شه، اما همچنان در موارد خاص و حساس کاربرد داره.
امیدوارم این مطلب براتون مفید بوده باشه. 🙂
اگر سوالی دارید یا می‌خواید بیشتر بدونید، حتماً در بخش نظرات بپرسید! 💌

دیدگاهتان را بنویسید