Secure by Design

Secure by design oder auch Security by Design, im Software-Engineering, bedeutet, dass die Software von Anfang an so konzipiert wurde, dass sie sicher ist. Böswillige Praktiken werden als selbstverständlich angesehen und es wird darauf geachtet, die Auswirkungen im Vorfeld von Sicherheitsschwachstellen, bei der Entdeckung einer Sicherheitsschwachstelle oder bei ungültigen Benutzereingaben zu minimieren.

Im Allgemeinen sind Designs, die gut funktionieren, nicht darauf angewiesen, geheim zu sein. Obwohl nicht zwingend erforderlich, bedeutet angemessene Sicherheit in der Regel, dass jeder das Design kennen und verstehen darf, weil es sicher ist. Dies hat den Vorteil, dass viele Menschen den Computercode betrachten, was die Wahrscheinlichkeit erhöht, dass Fehler früher gefunden werden (siehe Linus‘ Gesetz). Angreifer können auch den Code erhalten, was es ihnen erleichtert, ebenfalls Schwachstellen zu finden.

Außerdem ist es wichtig, dass alles mit den geringstmöglichen Privilegien funktioniert. So kann beispielsweise ein Webserver, der als administrativer Benutzer („root“ oder admin) läuft, die Berechtigung haben, Dateien und Benutzer zu entfernen, die nicht dazugehören. Ein Fehler in einem solchen Programm könnte das gesamte System gefährden, während ein Webserver, der innerhalb einer isolierten Umgebung läuft und nur die Privilegien für die erforderlichen Netzwerk- und Dateisystemfunktionen besitzt, das System, auf dem er läuft, nicht gefährden kann, es sei denn, die Sicherheit um ihn herum ist an sich ebenfalls fehlerhaft.

Secure by Design findet rege Anwendung im Bereich des Machine Learnings.