Padding Oracle to atak, który pozwala na wyłuskanie tekstu jawnego z zaszyfrowanych danych bez znajomości klucza szyfrującego, a także bez potrzeby znalezienia jakichkolwiek błędów w samym algorytmie szyfrującym. Swego czasu atak był wykorzystywany m.in. do złamania mechanizmu sesji w ASP.NET, co z kolei pozwalało na przejęcie uprawnień dowolnego użytkownika. Innym, świeższym przykładem jest opisany w 2014 roku atak POODLE, którego nazwa znaczy Padding Oracle On Downgraded Legacy Encryption, wskutek którego zaleca się, aby nie używać już SSLv3. W tym artykule omówimy, czym jest Padding Oracle, wraz ze schematem ataku oraz metodami obrony.
Zacznijmy jednak od podstaw. Najpopularniejsze dzisiaj algorytmy szyfrujące, takie jak AES czy 3DES, działają w oparciu o bloki o stałych wielkościach. Na przykład AES jest zdefiniowany do szyfrowania bloków o wielkości 128 bitów (16 bajtów). Oznacza to, że jeżeli chcemy zaszyfrować dane o dowolnej wielkości, musimy zadbać o to, by do funkcji szyfrującej przekazać je w postaci 16-bajtowych bloków. Pojawiają się zatem dwa zasadnicze pytania:
Poznamy odpowiedzi na wszystkie te pytania w tym artykule.
Artykuł pochodzi z miesięcznika "Programista" nr 43. Spis treści tego wydania: http://programistamag.pl/programista-12-2015-43/
Autorem artykułu jest Michał Bentkowski, realizuje testy penetracyjne oraz audyty bezpieczeństwa w firmie Securitum. Autor w serwisie sekurak.pl. Aktywnie (i z sukcesem) uczestniczy w znanych programach bug bounty.