Hallo,
also mal rein gefühlt empfinde ich deinen Ansatz als Lösung für das falsche Problem.
Wenn ein Codestück zu komplex wird, schmeisse ich es weg, verzichte auf ein unwesentliches Merkmal und schreibe es einfacher.
Wenn du genug unwesentliche Merkmale weglässt, ist dein System nutzlos.
Die Sicherheit soll hardwareseitig, durch das Design und durch Runtime-Checks gewährleistet werden.
Das heißt, du setzt moderne Hardware voraus (IOMMU, 64-Bit-Modus), verzichtest damit auf Segmentierung und arbeitest ausschließlich mit "managed Code" in einem Hypervisor.
Ich will dass User im Internet surfen können ohne ein schlechtes Gewissen zu bekommen und beliebige Software herunterladen und ausführen können ohne dass diese unbeabsichtigte Dinge tun oder Dienste im Hintergrund starten.
Das wiederum hat genau nichts mit dem Kernel zu tun. Weder Windows noch Linux erlauben einem Benutzer, Dienste im Hintergrund zu starten oder unbeabsichtigte, das System beeinflussende, Dinge zu tun.
Die Angriffe, die einstmals das Betriebssystem geknackt haben, sind nutzlos geworden. Das heißt nicht, dass es keine Rootkits gibt, aber auf PCs sind sie für den Normalnutzer kein Thema. Es ist ziemlich egal, ob du von einem Benutzer den Rechner oder das Profil knackst - wenn du die Daten hast, hast du gewonnen. Anwendungen leben heutzutage im Browser und
den zu sichern ist schwierig, weil es Unmengen an Code und Standards sind, die du unterstützen musst. Dazu kommt, dass sich die Standards widersprechen (WSDL und SOAP anyone?) oder hinreichend mächtig sind (JIT-compiled Javascript).
"Das Internet" hat nicht mehr viel mit deinem Betriebssystemskernel zu tun und dessen Sicherheit ist nebensächlich. Googles ChromeOS zeigt den Weg. Wenn es nach den derzeit regierenden Firmen (Microsoft, Google, Facebook) geht, sind Betriebssysteme eine sterbende Ware.
Ich will außerdem, dass ein Programm beliebig angehalten und sein Zustand gespeichert werden kann, um es mit ins Büro zu nehmen oder einem Bekannten zu schicken. Eine Präsentation im Internet bedeutet, ich kann die Show anhalten und das Programm selbst ausprobieren.
Wie bringst du das dem anderen System im Internet bei, wenn es Session-IDs basierend auf IP-Adressen benutzt? Es ist ja schön und gut, wenn dein Webbrowser das alles unterstützt, aber die anderen müssen genauso denken.
Man hat auf dem letzten Chaos-Congress gesehen, wie sehr Dienste z.B. heutzutage auf Geolocation angewiesen sind und was passiert, wenn es schiefgeht. Ich empfehle den NOC-Bericht. Extrapoliere das von "Geolocation-Daten" auf die Summe der Informationen, die so ein Browser rausgibt und du siehst das Problem vielleicht. Facebook sammelt eine Menge Informationen über die Nutzer durch die Like-Buttons und korreliert die mit den Profilen, auch wenn derjenige nicht angemeldet ist. Außerdem werden Profile über Nutzer ohne Account angelegt und ausgewertet. Die Leute haben rausgefunden, dass ein
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20100101 Firefox/10.0.12 Iceweasel/10.0.12 zwar nah dran, aber doch nicht so ganz eindeutig ist, wohl aber das Tupel aus User-Agent, Betriebssystem, Geolocation-Daten, Provider, IP-Paketroute, Verbindungsqualität (Ping+Bandbreite), Sprache des Nutzers, Bildschirmauflösung
und vielem mehr.
Ich will mein Betriebssystem und alle darauf laufenden Programme mit nur einem Klick im Editor bearbeiten können, etwa um eine Suchmaske zu ändern oder ein Programm zu scripten.
Also möchtest du alle Anwendungen für dein Betriebssystem im Source-Code in einer Scriptsprache schreiben
und das Betriebssystem selbst, bis auf die Trusted Code Base in dieser Sprache schreiben? Bringt das was?
Willst du wirklich den Source-Code von Firefox, Chrome, Internet Explorer einsehen und zur Laufzeit ändern können? Glaubst du, es gibt Programmierer auf dieser Welt, der in der Lage ist, sich auf die Schnelle in solch ein Mammutprojekt einzulesen und seiteneffektfreie Änderungen vorzunehmen? Der Sinn liegt ja nicht darin, dass jemand auf seiner Festplatte drei Zeilen Code ändert, sondern dass jeder sein persönliches System anpassen können soll. Das ist schlichtweg nicht möglich.
Übrigens hat sich auch gezeigt, dass Open-Source-Code teilweise schlechter auditiert ist als proprietäres Zeug - was daran liegt, dass es offen ist und mit "irgendjemand wird das schon gemacht haben" betitelt ist, was insbesondere bei kleinen (weil nicht genug Leute) und sehr großen Projekten (weil Codebasis zu groß) nicht passiert.
Einen mehrstündigen Kompiliervorgang oder einen aufwändigen Testlauf will ich auf einem schnellen Server parallelisiert ausführen, während ich ein Forum im Internet auch gerne mal offline lesen möchte.
Ich dachte, du möchtest auf Scriptsprachen umsteigen? Aber parallel kompilieren auf einem Drittserver gibt es heutzutage schon, z.B. mit distcc. Ein Forum offline lesen geht heutzutage auch, solange es sich nicht gerade um das neuste, möglichst stark im Browser implementierte Forum handelt.
wget ist dein Freund.
Wenn ich Windows oder Linux benutze sehe ich immer nur was alles nicht geht.
Repariere lieber Linux.
Du hast eine nette Vision. Ich hätte auch gern so eine Welt, wie du sie beschreibst.
Aber ich sehe, dass die Welt gerade in eine völlig andere Richtung marschiert, auf allen Fronten gleichzeitig. Und ich sehe, dass deine Ansätze dieser Vision nicht helfen.
Wie oben geschrieben, "das Internet" lebt inzwischen im Browser, nicht im Betriebssystem. Und ein sauberer Mikrokernel mit maximaler Sicherheit hilft nicht dagegen, dass 3D-Grafiktreiber (notwendig, weil 3D- und Videobeschleunigung im Browser) aufgrund der komplexen Hardware so unglaublich schwierig zu programmieren und zu sichern sind. Bugs kannst du nicht vermeiden - und Bugs in Hardwaretreibern können zu DMA führen, und damit zu Rootkits.
Aus dem Browser.
Welcome to the future,
Svenska
PS: Ich wüsste gerne, was ihr so denkt und/oder ob ich mit meiner Meinung ganz alleine dastehe und Dimension hier ganz unnötig Contra gebe und ihr das ganz anders seht.