Projekt zaufania

Architektura i zasady projektowania bezpieczeństwa

Trzy elementy bezpieczeństwa i zasady projektowania bezpieczeństwa

  • Integralność
  • Dostępność
  • Poufność

Zasada otwartego projektowania

Open Design

  • Projekt nie powinien być tajemnicą, otwarty projekt jest bezpieczniejszy.
  • Bezpieczeństwo nie zależy od tajemnicy.

Zasada bezpieczeństwa domyślnego w przypadku awarii

Fail-safe defaults

  • Decyzje dotyczące dostępu opierają się na “zezwoleniu”, a nie na “odmowie”.
  • Domyślnie dostęp nie jest dozwolony, mechanizmy ochrony służą jedynie do identyfikowania dozwolonych przypadków dostępu.
  • Bezpieczeństwo awaryjne: każdy złożony system powinien mieć mechanizm bezpieczeństwa awaryjnego po awarii funkcji, dodatkowo należy uważać na komunikaty o błędach i dzienniki, aby zapobiec wyciekowi informacji.
  • Bezpieczeństwo domyślne: system w stanie początkowym ma domyślną konfigurację zapewniającą bezpieczeństwo, zapewniając bezpieczeństwo za pomocą minimalnej liczby systemów i usług.

Zasada rozdzielenia uprawnień

Separation of Privilege

  • Mechanizm ochrony wymagający dwóch kluczy do odblokowania jest bardziej solidny i elastyczny niż mechanizm wymagający jednego klucza.
  • Cele rozdzielenia uprawnień
  • Zapobieganie konfliktom interesów, nadużyciom indywidualnej władzy
  • Rozdzielenie ważnych uprawnień na wiele uprawnień, aby obiekty, które należy chronić, były trudniejsze do nielegalnego uzyskania, a tym samym bezpieczniejsze.
  • Rozdzielenie obowiązków i uprawnień różnych procesów

System może domyślnie ustawiać 3 role, konta systemowe poszczególnych ról są od siebie niezależne, a obowiązki i uprawnienia są rozdzielone:

  • Administrator systemu: odpowiada za codzienne zarządzanie użytkownikami i konfiguracją systemu.
  • Administrator bezpieczeństwa: odpowiada za aktywację i dezaktywację stanu użytkownika i konfiguracji bezpieczeństwa.
  • Auditor bezpieczeństwa: odpowiada za audyt operacji dwóch powyższych ról oraz posiada uprawnienia do eksportu dzienników, zapewniając możliwość śledzenia wszystkich operacji użytkowników systemu.

Zasada minimalnych uprawnień

Least Privilege

  • Każdy użytkownik, każdy program w systemie powinien używać minimalnego i niezbędnego zestawu uprawnień do wykonania pracy.
  • Upewnij się, że aplikacje działają z minimalnymi uprawnieniami.
  • Należy zwrócić uwagę na konta o minimalnych uprawnieniach do uruchamiania lub łączenia się z różnymi programami użytkowników w systemie, takimi jak bazy danych, serwery WWW itp., nie mogą to być konta o najwyższych uprawnieniach systemowych.
  • Podczas tworzenia nowego konta domyślnie przydziel najniższą rolę uprawnień.

Zasada oszczędności środków

Economy of Mechanism

  • Zachowaj projekt systemu i kod jak najprostszy i zwięzły.
  • Im bardziej złożony jest projekt oprogramowania, tym większe prawdopodobieństwo wystąpienia błędów w kodzie, jeśli projekt będzie jak najbardziej precyzyjny, tym mniejsze prawdopodobieństwo wystąpienia problemów z bezpieczeństwem.
  • Usuń zbędny kod i moduły funkcjonalne, które nie są potrzebne, pozostawienie tego kodu tylko zwiększy powierzchnię ataku systemu.
  • Projektuj komponenty przeznaczone do ponownego użytku, aby zmniejszyć nadmiarowy kod.
  • Oszczędność i przydatność: proste, precyzyjne, modułowe.
  • Nie projektuj zbyt skomplikowanie

Zasada minimalnej komunalizacji

Least Common Mechanism

  • Należy unikać sytuacji, w których wiele obiektów współdzieli ten sam zasób, liczba i wykorzystanie współdzielonych zasobów przez obiekty powinny być minimalizowane.
  • Współdzielone obiekty stanowią potencjalne niebezpieczeństwo kanałów przepływu informacji i niezamierzonego oddziaływania, należy unikać sytuacji, w których wiele obiektów współdzieli ten sam zasób.
  • Jeśli jeden lub więcej obiektów nie jest zadowolonych z usług oferowanych przez mechanizm współdzielenia, mogą one zdecydować się nie korzystać z mechanizmu współdzielenia, aby uniknąć pośredniego ataku przez błędy innych obiektów.
  • Minimalizacja współdzielonej pamięci
  • Minimalizacja powiązań portów
  • Zmniejszenie liczby połączeń, obrona przed atakami typu DoS

Zasada pełnego pośrednictwa

Complete Mediation

  • Zasada pełnego pośrednictwa wymaga, aby każdy dostęp do każdego obiektu był poddawany kontroli bezpieczeństwa.
  • Za każdym razem, gdy podmiot próbuje uzyskać dostęp do obiektu, system sprawdza, czy podmiot ma takie uprawnienia.
  • Należy jak najbardziej polegać na właścicielu zasobu przy podejmowaniu decyzji dotyczących kontroli dostępu, np. jeśli jest to URL, to serwer wewnętrzny sprawdza, a nie front-end.
  • Szczególną uwagę należy zwrócić na użycie i sprawdzenie pamięci podręcznej, nie można zagwarantować, że każda informacja w pamięci podręcznej nie została zmodyfikowana przez hakerów. np. oszustwo pamięci podręcznej DNS.

Zasada akceptowalności psychologicznej

Psychological Acceptability

  • Mechanizmy bezpieczeństwa mogą zwiększyć obciążenie użytkowników systemu, ale obciążenie to musi być minimalne i uzasadnione.
  • Mechanizmy bezpieczeństwa powinny być jak najbardziej przyjazne dla użytkowników systemu, ułatwiając im korzystanie z systemu i zrozumienie jego działania.
  • Jeśli metoda konfiguracji jest zbyt złożona i żmudna, administrator systemu może przypadkowo skonfigurować nieprawidłową opcję, co z kolei spowoduje, że system stanie się niebezpieczny.
  • Ta zasada dotyczy zazwyczaj interakcji człowiek-komputer i interfejsu zgodnego z zasadą UCD (User Centered Design).

Zasada głębokiej obrony

Defense in Depth Głęboka obrona to złożone i bardzo wymagające zasady obrony, które zazwyczaj wymagają od architektów systemów kompleksowego wykorzystania innych różnych zasad projektowania bezpieczeństwa, wykorzystania wielu i wielokrotnych mechanizmów kontroli bezpieczeństwa, a także ogólnej perspektywy bezpieczeństwa systemu na poziomie architektury systemu, a nie polegania tylko na jednym mechanizmie bezpieczeństwa.