Proactive zaciemniania


Proactive Obfuscation
Copyright © By Fred B. Schneider
For original English text, go to: http://www.cs.cornell.edu/fbs/proactiveObuscation/proactive_obfuscation.html

Przegląd

Niepodległości niepowodzeń repliki jest kluczowe przy użyciu replikacji w wiarygodnych rozproszonych usług. Ale repliki, które używają tego samego kodu same luki. Tak, repliki nie powiedzie niezależnie gdy atakowany. Proactive zaciemniania to nowa metoda przywrócenia jakiejś mierze tego niepodległości, przy czym każda replika jest okresowo ponownie przy użyciu świeżo wygenerowany zróżnicowaną wykonywalny.

Różne techniki, które zostały zaproponowane do zaciemniania — automatyczne tworzenie różnorodnych plików wykonywalnych podczas kompilacji, załadunku lub w czasie wykonywania. Należą do nich zamianom adres i padding stosu, reorganizację wywołania systemowego, randomizacji zestawu instrukcji, i randomizacji sterty. Wszystko produkować zaciemnionego wykonywalnych, który prawdopodobnie bardziej prawdopodobne, aby rozbić w odpowiedzi na niektórych klas ataków zamiast spadać pod kontrolą przeciwnika. Na przykład atak przepełnienia bufora zwykle będzie zależeć od szczegółów układu stosu, więc repliki za pomocą różnie zaciemnionego wykonywalnych opartych na uporządkowanie adresu lub wyściółkę stosu mogą upaść zamiast ulegając kontrolą atakującego.

Model zaciemniania

Zamiast w zależności od właściwości poszczególnych technik zaciemniania, mamy abstrakcyjne dwie właściwości, że wymagają one do spełnienia.

Niepodległości zaciemniania.

Dla t> 1, ilość pracy dla przeciwnika do kompromisu t repliki zaciemnionego jest Ohm t) czas pracy potrzebny do kompromisu jednej repliki.

Ograniczony przeciwnika.

Czas potrzebny na przeciwnika do kompromisu t + 1 repliki jest większa niż czas potrzebny do reobfuscate, reboot, i odzyskać n replik.

Niepodległości zaciemniania oznacza, że ​​różne ukrywane wykonywalne wykazują pewien stopień niezależności. Założeniem obecnych metod zaciemniania jest to, że zbliżenie Niepodległości zaciemniania. Biorąc pod uwagę dość czasu, jednak przeciwnik może wciąż być w stanie zagrozić t +1 replik. Niepodległości zaciemniania i ograniczoną przeciwnik razem oznacza, że ​​okresowo reobfuscating i restart repliki jednak utrudnia przeciwnikom zachować kontrolę nad bardziej niż T replik skompromitowanych. W szczególności, w momencie przeciwnik mógł zaburzoną t +1 zaciemnionego replik, wszystkie n były reobfuscated i ponownym uruchomieniu komputera (z atakujący eksmisji), więc nie więcej niż t repliki nigdy zagrożona.

Mechanizmy

Proactive zaciemniania zależy od trzech mechanizmów, które są przedstawione w następującym reprezentacji zreplikowanej usługi z replik n.

Odpowiedz syntezę.

Klienci wysłać wejście do replik — Każda replika implementuje ten sam interfejs, uzyskując scentralizowane usługi i wysyła wynik do klientów. Aby przekształcić wyjście z wielu replik w moc z replikowane usługi, repliki zatrudnić wyjścia syntezy funkcji FD, gdzie d określa minimalną liczbę różnych replik, z którego odpowiedź jest potrzebne. Synteza odpowiedź jest mechanizm, który realizuje funkcję syntezy wyjściowy dla klientów.

Odzyskanie państwa.

Repliki zachować stan może się zmienić, gdy proces wejście od klientów — po restarcie, mechanizm odzyskiwania państwo zapewnia drogę do repliki w celu odzyskania stanu, aby mogli kontynuować udział w zreplikowanej usługi. Aby przekonwertować stan otrzymane od wielu replik w jedno państwo, ponowny rozruch repliki zatrudniać syntezę państwa gr funkcji, gdzie r określa minimalną liczbę różnych replik, z którego odpowiedź jest potrzebne.

Odśwież.

Mechanizm odświeżania zapewnia świeżo zaciemnionego wykonywalne do replik, okresowo resetuje gospodarzy i informuje repliki zmian epoki.

Realizacja
Użyliśmy tych mechanizmów do wdrożenia prototypy dwóch usług: rozproszone zapory (na podstawie PF w OpenBSD) przy użyciu replikacji machinę państwową i rozproszonych zapytań aktualizacji usługi za pomocą kworum systemów. Oba prototypy wdrożenie mechanizmów w przestrzeni użytkownika za pomocą pseudo-urządzenie do obsługi pakietów odebranych przez jądro. Oba realizowane są w C z użyciem OpenSSL. Nasz dokument zawiera informacje odnośnie do oceny tych prototypów.

Comments are closed.