در رمزنگاری ، **حمله لایه گذاری اوراکل** یک حمله ایی است که از صحت لایه گذاری یک پیام رمزنگاری شده استفاده می‌کند ،  تا متن رمزی را رمزگشایی کند.

در رمزنگاری، معمولا پیام های با متن ساده و با طول متغیر باید فاصله گذاری شوند (بزرگ تر شوند) تا بتوانند با اصول رمزگذاری اولیه سازگار شوند. اين حمله به یک "لایه گذاری اوراکل" وابسته است که بتواند آزادانه به رشته های درباره اینکه آیا متن به درستی فاصله گذاری (لایه گذاری) شده است یا نه، جواب بدهد. حملات Padding Oracle بیشتر با رمزگشایی حالت CBC که در رمزهای بلوکی استفاده می شود، مرتبط هستند.حالت های لایه گذاری (فاصله گذاری) برای الگوریتم های نامتقارن ,مانند OAEP هم ممکن است نسبت به این حملات آسیب پذیر باشند.

رمزنگاری متقارن
---------------

در رمزنگاری متقارن، حمله اوراکل padding ("لایه گذاری اوراکل") را می‌توان در حالت عملیات CBC وارد كرد ، جایی که « اوراکل » (معمولاً یک سرور است) اطلاعات را در  خصوص اینکه آیا فاصله گذاری (لایه‌بندی) یک متن رمزنگاری شده صحیح است یا نه  نشر میکند. این اطلاعات می‌تواند به حمله کننده ها این امکان را بدهد که متن را از طریق اوراکل با استفاده کردن از کلید اوراکل رمزگشایی و حتی بعضی مواقع رمزگذاری کنند،حتي بدون دانستن کلید رمزگذاری.

### حمله "لایه گذاری اوراکل" بر روی رمزگذاری CBC

پیاده سازی مرسوم و معمول در رمزگشایی CBC در رمز های بلوکی این است که ، تمام بلوک های متن رمز شده را رمزگشایی کنیم ، فاصله گذاری (لایه گذاری) را تایید کنیم ، لایه گذاری (فاصله گذاری) PKCS7 را حذف کنیم و متن ساده پیام را برگردانیم. اگر سرور ارور "فاصله گذاری(لایه گذاری) نامعتبر "به جای یک ارور عمومی "رمزگشایی انجام نشد"(«invalid padding») داد ، حمله کننده می‌تواند از سرور به عنوان یک "لایه گذاری (فاصله گذاری) اوراکل" استفاده کند تا پیام را رمزگشایی یا حتی بعضی مواقع رمزگذاری کند

فرمول ریاضی رمزگشایی CBC به صورت زير است ː

{\displaystyle P\_{i}=D\_{K}(C\_{i})\oplus C\_{i-1},}
{\displaystyle C\_{0}=IV.}
همانطور که در بالا نشان داده شده است، رمزگشایی CBC هر بلوک متن ساده را با بلوک قبلی خودش XOR می کند.كه در نتیجه، یک تغییر و تبدیل تک بایتی در بلوک {\displaystyle C\_{1}} یک تغییر متناظر را به یک بایت در داخل {\displaystyle P\_{2}} انجام خواهد داد .

### رمزگذاری پیام ها با حمله "لایه گذاری اوراکل" (CBC-R)

CBC-R یک طرح اوراکل رمزگشایی را به یک اوراکل رمزگذاری تبدیل می‌کند و اين در درجه اول در برابر "لایه گذاری اوراکل" نشان داده می‌شود.

با استفاده از CBC-R, padding oracle attack می‌تواند یک بردار اولیه و يك بلوک متن رمزي را برای هر متن ساده اي را ایجاد کند:

* هر متن رمزی **P i = PODecrypt( C i ) XOR C i-1 را رمزگشایی كنيد** ،
* بلوک رمز قبلی **C x-1 را** آزادانه انتخاب کنید،
* متن رمز/متن ساده معتبر **C x-1 = P x XOR PODecrypt( C i )** را تولید کنید.

حمله CBC-R در مقابل یک نمونه طرح رمزگذاری که ، متن رمزی (با استفاده از پیام کد احراز هویت پیام (message authentication code) یا همانند ان) را پیش از رمزگشایی تصدیق می کند، کار نخواهد کرد.

حملات با استفاده از لایه گذاری اوراکل
-------------------------------------

اولین حمله اصلی در سال 2002 توسط Serge Vaudenay.

منتشر شد. نمونه های دیگری از حمله بعدا در برابر SSL  و IPSec شناخته شدند.   این همچنین برای چند فریم شبکه, مانند JavaServer Faces ، Ruby on Rails و ASP ارائه شد. NET   و نرم افزار های دیگر همچون، سرویس گیرنده بازی مشتري Steam.  در سال 2012 نشان داده شد که اين در برابر برخی از دستگاه های امنیتی سخت تر کارآمد است. 

درحالی که این حملات اولیه بیشتر توسط پیاده‌کننده‌های TLS پس از اعلام عمومی آن برطرف شد، یک گونه جدید به نام ، حمله سیزده خوش شانسي Lucky Thirteen attack ، که در سال 2013 منتشر شد، که از یک زمانبندی کانال جانبی استفاده کرد تا دوباره نقاط آسیب پذیر را حتی در پیاده سازی هایی که قبلا درست شده بودند باز کند. در اوایل 2014, این حمله دیگر به عنوان یک خط جدی و مرگبار در کارهای واقعی بحساب نمی‌آید اگرچه هنوز در تئوری قابل اجراست( نسبت سیگنال به نویز را مطالعه کنید ) دربرابر دسته خاصی از ماشینها. تا تاریخ ۲۰۱۵[بروزرسانی] فعال ترین حوزه توسعه دربرابر حمله به پروتکل (دستور عمل) رمزنگاری برای ایمن کردن ترافیک اینترنت حمله های حملات کاهش رتبه(downgrade attack) ، مانند حملات Logjam  و RSA/FREAK  بودند که مشتری را فریب می دهند تا از دستورای رمزنگاری هایی استفاده کنند که برای سازگاری با مشتریان قدیمی ارائه شده است و  ایمنی کمتری دارند ، درحالی که روش های ایمن تری نیز وجود دارند. یک حمله به اسم POODLE  ( در اواخر 2014) هر دو حمله کاهش (down grade)(به SSL 3.0) را با یک حمله padding oracle باهم در پروتکل قدیمی و ناامن ترکیب می کند تا داده های ارسال شده را به خطر بیندازد. در اردیبهشت 2016 ،در CVE-2016-2107 معلوم شد که راه حل دربابر مشكل LUCKY THIRTEEN در openSQL , "لایه گذاری اوراکل" دیگری را معرفی کرد.

منابع
-----

1. ↑  Manger, James. "A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0" (PDF). Telstra Research Laboratories.
2. ↑  Brice Canvel; Alain Hiltgen; Serge Vaudenay; Martin Vuagnoux (2003), *Password Interception in a SSL/TLS Channel* (PDF).
3. ↑  Jean Paul Degabriele; Kenneth G. Paterson (2007), *Attacking the IPsec Standards in Encryption-only Configurations* (PDF), archived from the original on 19 December 2018, retrieved 25 September 2018.
4. ↑  Jean Paul Degabriele; Kenneth G. Paterson (2010), *On the (In)Security of IPsec in MAC-then-Encrypt Configurations*.
5. ↑  Dennis Fisher (2010-09-13). "'Padding Oracle' Crypto Attack Affects Millions of ASP.NET Apps". *Threat Post*. Archived from the original on 13 October 2010.
6. ↑  Vlad Azarkhin (2010-09-19). ""Padding Oracle" ASP.NET Vulnerability Explanation". Archived from the original on 23 October 2010. Retrieved 11 October 2010.
7. ↑  "Breaking Steam Client Cryptography". *Steam Database*. Retrieved 2016-05-01.
8. ↑  Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay (2012), *Efficient Padding Oracle Attacks on Cryptographic Hardware* (PDF)
9. ↑  Matthew Green; Nadia Heninger; Paul Zimmerman; et al. (2015), *Imperfect Forward Secrecy: How Diffie–Hellman Fails in Practice* (PDF). For further information see  بایگانی‌شده در ۲۲ دسامبر ۲۰۱۹ توسط Wayback Machine.
10. ↑  Matthew Green (2015-03-03). "Attack of the week: FREAK (or 'factoring the NSA for fun and profit')".; see  بایگانی‌شده در ۵ مارس ۲۰۱۵ توسط Wayback Machine for more information.
11. ↑  Matthew Green (2014-10-14). "Attack of the week: POODLE".; for further information, see
12. ↑  *OpenSSL Security Advisory [3rd May 2016]*, 2016-05-03
13. ↑  *Yet Another Padding Oracle in OpenSSL CBC Ciphersuites*, Cloudflare, 2016-05-04