**حمله با متن اصلی منتخب** (به انگلیسی: chosen plaintext attack) یک مدل حمله برای کشف رمز است که فرض می‌شود حمله‌کننده قابلیت انتخاب دلخواه پیام اصلی را دارد و می‌تواند پیام رمزشده مربوط به آن را به دست آورد. هدف حمله به دست آوردن اطلاعات بیشتری است که می‌تواند امنیت طرح‌های رمزنگاری را کاهش دهد.

رمزگذاری‌های مدرن امنیت معنایی را تأمین می‌کنند که با عنوان غیر قابل تشخیص بودن متن رمزشده در برابر حمله متن اصلی منتخب نیز شناخته می‌شوند و بنابراین در صورتی که درست پیاده‌سازی شوند، از لحاظ طراحی عموماً در برابر حملات با متن اصلی منتخب ایمن هستند.

الگوریتم‌های رمزنگاری کلید عمومی غیر تصادفی (قطعی) به سادگی توسط حمله‌های dictionary-type آسیب‌پذیر هستند که در آن حمله‌کننده جدولی از پیام‌های احتمالی و متن‌های رمز مربوط به آن‌ها را می‌سازد. برای پیدا کردن رمزگشایی برخی از متن‌های رمز شده حمله‌کننده به راحتی با نگاه کردن به متن‌های رمز شدهٔ موجود در جدول متن آشکار را بدست می آورد. در نتیجه برای تأمین امنیت کلید عمومی در مقابل حمله CPA به رمزنگاری احتمالی نیاز است (به عنوان مثال رمز گذاری تصادفی). رمزهای متقارن متعارف که در آن از همان کلید برای رمزگذاری و رمزگشایی یک متن استفاده می‌شود، ممکن است از انواع دیگر حمله CPA برای مثال تحلیل تفاضلی بلوک‌های رمز آسیب ببیند.

مقدمه
-----

در یک حمله با متن اصلی منتخب، دشمن می‌تواند (احتمالاً تطبیقی) متون رمزشده‌ی پیام‌های اصلی دلخواه را بخواهد. اگر به دشمن اجازه دهیم که با یک اوراکل رمزگذاری که به صورت یک جعبه سیاه مشاهده می‌شود تعامل داشته باشد، این امر می‌تواند رسمیت پیدا کند. هدف مهاجم این است که تمام یا بخشی از کلید مخفی رمزگذاری را به دست آورد.

این کار ممکن است در عمل غیر ممکن به نظر برسد که یک مهاجم بتواند متون رمزشده را برای یک متن اصلی داده شده به دست آورد. از طرف دیگر می‌دانیم رمزنگاری مدرن در نرم‌افزار یا سخت‌افزار اجرا می‌شود و برای طیف متنوعی از برنامه‌های کاربردی مورد استفاده قرار می‌گیرد. پس در بسیاری از موارد حمله chosen-plaintext اغلب بسیار امکان‌پذیر است. حمله chosen-plaintext به حملاتی بسیار مهم در زمینه رمزنگاری کلید عمومی تبدیل شده‌است که در این رمزنگاری کلید رمزنگاری، عمومی است و حمله‌کننده می‌تواند هر متن آشکاری را برای رمزنگاری انتخاب کند.

اشکال گوناگون
-------------

دو نوع حمله CPA وجود دارد:

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

روش عمومی یک حمله
-----------------

یک حمله دسته‌ای با متن اصلی منتخب معمولاً به صورت زیر انجام می‌شود:

1. مهاجم می‌تواند *n* متن اصلی را انتخاب کند (این پارامتر *n* بخشی از مدل حمله است که می‌تواند محدود یا نامحدود باشد).
2. سپس مهاجم این *n* متن اصلی را به اوراکل رمزگذاری می‌فرستد.
3. سپس اوراکل رمزگذاری متون اصلی مهاجم را رمزگذاری کرده و آن‌ها را به مهاجم می‌فرستد.
4. مهاجم *n* متن رمزشده از اوراکل دریافت می‌کند، به صورتی که مهاجم می‌داند هر متن رمزشده مربوط به کدام متن اصلی است.
5. بر اساس جفت‌های متن اصلی و متن رمزشده، مهاجم می‌تواند تلاش کند که کلید مورد استفاده اوراکل برای رمزگذاری متون اصلی را استخراج کند. از آن جایی که در این نوع حمله، مهاجم می‌تواند متن اصلی را متناسب با نیاز خود انتخاب کند، ممکن است پیچیدگی حمله کاهش یابد.

در شرایط بالا پس از مرحله آخر، مراحل زیر را در نظر بگیرید:

1. دشمن دو متن اصلی m 0 و m 1 را به عنوان خروجی تولید می‌کند.
2. بیت b یکنواخت و به صورت تصادفی انتخاب می‌شود {\displaystyle b\leftarrow \{0,1\}}.
3. دشمن، رمزنگاری m b را می‌گیرد و تلاش می‌کند «حدس بزند» که چه متن اصلی‌ای را دریافت کرده‌است و بیت 'b را به عنوان خروجی تولید می‌کند.

اگر دشمن بعد از اجرای آزمایش فوق با n = ۱ با احتمال غیر قابل اغماض بهتر از ۱/۲ نتواند 'b = b را به درستی تشخیص دهد، آن رمزگذاری، **رمزنگاری غیر قابل تشخیصی تحت حمله با متن اصلی منتخب** دارد.

نمونه‌ها
--------

نمونه‌های زیر نشان می‌دهد که چگونه بعضی از رمزگذاری‌هایی که تعاریف امنیتی دیگر را برآورده می‌کنند، ممکن است با یک حمله با متن اصلی منتخب شکسته شوند.

رمزگذاری سزار
حمله زیر به رمزگذاری سزار، امکان بازیابی کامل کلید مخفی را فراهم می‌کند:

1. فرض کنید دشمن این پیام را ارسال می‌کند: Attack at down،
2. اوراکل Nggnpx ng qnja را برمی‌گرداند.
3. سپس دشمن می‌تواند برای بازیابی کلید به همان روشی که رمزگذاری سزار را رمزگشایی می‌کند، عمل کند. دشمن می‌تواند جایگزینی‌های A → N و T → G و... را استنباط کند. این باعث می‌شود که دشمن بفهمد که ۱۳، کلید مورد استفاده در رمزگذاری سزار بوده است.

با استفاده از روش‌های رمزگذاری پیچیده‌تر، منابع روش رمزگشایی فشرده‌تر می‌شود؛ با این حال، مفهوم اصلی هنوز هم نسبتاً همان است.

One-time pad ها
حمله زیر به one-time pad، امکان بازیابی کامل کلید مخفی را فراهم می‌کند. فرض کنید طول پیام و طول کلید برابر n هستند.

1. دشمن یک رشته متشکل از n صفر را به اوراکل می‌فرستد.
2. اوراکل یای انحصاری (xor) کلید و رشته را برمی‌گرداند.
3. رشته‌ای که اوراکل برگردانده، کلید مخفی است.

در عمل
------

در جنگ جهانی دوم تحلیل‌گران رمز در نیروی دریایی ایالات متحده آمریکا کشف کردند که ژاپن قصد حمله به مکانی را دارد که به آن "AF" گفته می‌شود. آن‌ها معتقد بودند که "AF" ممکن است جزیره میدوی باشد؛ زیرا سایر مناطق در جزایر هاوایی دارای کلماتی رمزی بودند که با "A" شروع می‌شدند. برای اثبات فرضیه خود مبنی بر اینکه "AF" مربوط به جزیره میدوی است، از نیروهای آمریکایی در میدوی خواستند که یک پیام ساده درباره منابع کم ارسال کنند. ژاپنی‌ها این پیام را رهگیری کردند و بلافاصله به مافوق‌های خود گزارش دادند که منابع آب "AF" کم است که این امر، فرضیه نیروی دریایی آمریکا را تأیید کرد و به آن‌ها اجازه داد که نیروی خود را برای پیروزی در نبرد در موقعیت مستقر کنند.

همچنین در طول جنگ جهانی دوم، رمزشکنان متفقین در پارک بلتچلی گاهی از نیروی هوایی سلطنتی می‌خواستند مین‌هایی را در موقعیتی قرار دهد که هیچ علامت اختصاری یا جایگزینی در مرجع شبکه سیستم دریایی آلمان نداشته باشد. امید این بود که آلمانی‌ها با دیدن مین‌ها، برای رمزگذاری یک پیام هشداردهنده در مورد مین‌ها و یک پیام "همه پاکسازی شدند" پس از برداشتن آن‌ها، از یک ماشین انیگما استفاده کنند و این به متفقین اطلاعات کافی در مورد پیام را بدهد تا بتوانند انیگمای نیروی دریایی آلمان را بشکنند. این فرآیندِ کاشتن یک متن اصلی شناخته‌شده باغبانی نامیده شد. رمزشکنان متفقین همچنین به پیام‌های ارسال‌شده توسط مأمور دوم، ژوان پوژول گارسیا، که گزارش‌های رادیویی رمزگذاری‌شده‌اش در مادرید دریافت شده بود، کمک کرد که به صورت دستی رمزگشایی شوند و سپس با یک ماشین انیگما برای انتقال به برلین مجدداً رمزگذاری شوند. این به رمزشکنان کمک کرد که کد استفاده شده در مرحله دوم را با تهیه متن اصلی رمزگشایی کنند.

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

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

ارتباط با حملات دیگر
--------------------

یک حمله با متن اصلی منتخب، قوی‌تر از حمله با متن اصلی شناخته‌شده است؛ زیرا مهاجم می‌تواند مستقیماً اصطلاحات یا الگوهای خاصی را مورد هدف قرار دهد، بدون اینکه منتظر بماند به طور طبیعی ظاهر شوند. همچنین امکان جمع‌آوری سریع‌تر داده‌های مربوط به تحلیل رمزنگاری را فراهم می‌کند. بنابراین هر رمزی که بتواند از حملات CPA جلوگیری کند، تضمین می‌کند در برابر حملات متن آشکار و حملات ciphertext-only امن باشد.

با این حال، هنگامی که مهاجم بتواند متن اصلی را برای متون رمزشده دلخواه به دست آورد، یک حمله با متن اصلی منتخب ضعیف‌تر از یک حمله با متن رمزشده منتخب است. یک مهاجم حمله با متن رمزشده منتخب، گاهی می‌تواند یک سیستم ایمن در برابر حمله با متن اصلی منتخب را بشکند. مثلا رمزگذاری El Gamal در برابر حملات با متن اصلی منتخب ایمن است اما در برابر حملات با متن رمزشده منتخب آسیب‌پذیر است؛ زیرا بی قید و شرط، انعطاف‌پذیر است.

جستارهای وابسته
---------------

* حمله متن آشکار
* حمله متن رمزشده انتخابی

منابع
-----

1. ↑  «*حمله با متن اصلی منتخب*» [*رمز*] هم‌ارزِ «*chosen plaintext attack*»؛ منبع: گروه واژه‌گزینی. جواد میرشکاری، ویراستار. فرهنگ واژه‌های مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. پارامتر `|عنوان= یا |title=` ناموجود یا خالی (کمک)
2. ↑  صفحه حمله با متن اصلی منتخب در ویکی‌پدیای انگلیسی

لینک‌های مرتبط
--------------

 صفحه حمله با متن اصلی منتخب در ویکی‌پدیای انگلیسی