Salve
Blackberry OS 10 rühmt sich aufgrund der Sicherheit des Kernels und hebt dabei gerne auch hervor, dass es ein Microkernel. Das wird gerne so interpretiert, als währe der Kernel sicher WEIL er ein Microkernel ist. Aber ist das wirklich so? oder endgültig so?
Was ist eigentlich ein Microkernel, oder ein Kernel an sich?
Ein Computer, und damit auch ein Smartphone besteht aus verschiedenen Hardwarekomponenten, die zusammengesteckt werden und die durch Programme dazu gebracht werden, irgend was sinnvolles zu tun. diese Programme sind oft in einer sprache geschrieben die sogar für menschen irgendwie einen Sinn ergeben. Das Basic miniprogramm
gibt zum beispile die ausgabe Hallo Welt aus. Aber die Komponenten, aus denen ein Computer besteh können nur strohm aus und strom an. Also muss da eine möglichkeit sein, dieses Hallo Welt in Strom an und Strom aus zu übersetzen, den binärcode.. da kommt dann irgendwas raus wie 0100100111101011010010011100101 oder so.
Nun hat die Hardware als nun etwas das sie lesen kann.. nur.. mit was soll sie printen? und was geschieht mit dem ersten zeichen, wenn das zweite zeichen bearbeitet wird? Wie weiss welches Teil des Computers welches Teil wie angeschlossen ist? Und genau da kommt nun, unter anderm der Kernel zum Zuge.
Ein Kernel ist die unterste Schicht eines Betriebsystems (bootloader/bios und so lassen wir mal aus, denn im grunde sagt jeder bootloader vereinfacht nur: oh, strom toll - hei, kernel, aufwachen, mach mal was) Der Kernel verwaltet nun die Hardwarekomponenten und "abstrahiert" sie, macht sie also für Programme zugänglich. Um auf das Hallo Welt beispiel zurückzukommen: ohne kernel müsste man dem programm sagen: hei prozessor der marke sowieso, typ sowieso sagt Ram marke sowieso typ sowieso in dem und dem abschnitt so und so viel zeichen speicher bereit halten um all die befehle aufzunehmen, die ich für dich hab.. dann lädst du aus dem speicher soweiso meine befehle in den vorher zugewiesenen rambereich um von dort an dieses und jenes ausgabegerät in der und der farbe so und so gross in genau dem und dem bereich punkte an und aus zu machen, damit das aussieht als würde da hallo welt stehen für den menschen der davor steht - arg umständlich so ein programm, das zudem ein massives problem hätte: es würd nur auf einer einzigem Computer laufen, und dort auch nur, wenn immer genau dieselben Komponenten verbaut sind. ein neuer Bildschirm hiesse schon, dass man das Programm neu schrieben müsste.
und da ist wieder der kernel im Einsatz: der Kernel übernimmt das programm und ist dann klug genug zu erkennen, dass dieses Hallo welt, eben auf einen Bildschirm ausgegeben werden soll und adressiert dann die speicher und die Register in der CPU (Und Grafikkarte und und und) eigenständig. Das heisst dann auch: auf jedem Gerät, auf dem derselbe kernel läuft, mehr oder weniger unabhängig von der Hardware läuft ein programm, ohne dass man es umschreiben oder anpassen müsste: denn die programme reden dann nicht mehr mit der Hardware selber, sondern mit dem kernel.. und dieser hat immer dieselbe sprache.
So: was ist nun ein Mikrokernel.. um das zu erklären, gucken wir uns zuerst einen Monolitischen Kernel an (z.b. Linux). Ein Monolitischer Kernel ist im grunde genommen ein riesen Monster einer Hardwaredatenbank.. Darin sind alle möglichen Hardwarekomponenten in ihren Modulen (vulga: Treiber) abgelegt, unzählige grafikkarten, prozessoren, festplatten, Bildschirme und weis der geier was.. alles ist da drin abgelegt, und daher ist es ein Wulst an Programmiercode.. All diese einzelnen kleinen bestandteile für die Hardware gehorchen derselben Sprache. Das heisst: ganz egal auf welcher Hardware ein solcher Monolitischer Kernel läuft: für die Programme und den Andwender verhält es sich genau gleich: es ist nicht zusätzlich zu beachten, keine nachträglichen treiber, nichts. es ist auch möglich, einzelne komponenten des System auszutauschen, ohne dass man das System nachkonfigurieren muss. Grundsätzlich ist es sogar möglich, eine Festplatte auf der ein Monolitischer Kernel installiert ist in einen komplett anderen Computer einzubauen, die Powertaste zu drücken und es läuft, ohne das jemals was gewesen währe.
und was ist nun ein Mikrokernel? im Grunde genommen das pure gegenteil: im Mikrokernel ist nur die notwendigste Hardware abgelegt - meist sehr genau zugeschnitten auf eine ganz bestimmte Hardwarearchitektur (Intel oder ARM z.b) und bietet für weitere Komponenten nur ganz minimale Grundkonfigurationen mit, die gerade soweit reichen, dass es möglich ist, weitere komponenten hinzuzufügen: die treiber. Im Vergleich zu einem Monolitischen Kernel ist ein Mikrokernel ein wirklicher Winziling, und er kann dafür auch entsprechend weniger. Das Klingt zuerst einmal alles wie ein nachteil.. Aber: wie oben schon angedeutet: ein Monolitscher Kernel ist ein Monstrum an Code, kaum zu überblicken, wohingegen ein Mikrokernel sehr übersichtlich ist, und daher fehler darin auch schneller gefunden werden können. Und weil er so klein ist, ist er auch unglaublich schnell, denn er muss nicht unendlich viel unnötiges Zeugs laden. Allerdings, wie gesagt, kann er nicht sehr viel.. Damit ein Mikrokernel die Hardware wirklich verwalten kann, braucht er Treiber für die Hardware, die zusätzlich installiert werden muss und die nebenher läuft. Das heisst aber auch: wird die Hardware umgebaut, müssen die Treiber neu installiert werden, da der Kernel selber die hardware eben nicht direkt verwaltet.
kleiner Exkurs zu einem unsichern Programm, das einen miesen Mikro, bzw Hybriden kernel hat: windows:
nirgens zeigen sich die möglichen Nachteile eines Mikrokernels deutlicher als beim Windows Treiber gemessie.. jeder der mal Direct X installiert hat, weis was ich mein: jedes programm bringt seine eigene direct x version mit, oft sind die programme auch nur für diese eine direct x version zugeschnitten, das heisst, sobald ein anderes programm eine neue direct x version installiert, kackt entweder das programm ab, es muss wieder einmal direct x installiert werden oder es sind sogar mehrere versionen paralell installiert, manchmal sogar so, dass Windows nicht mehr weis, welche version nun berhaupt zum zuge kommt und seine verwirrtheit mit einem schönen blauen Bildschirm quittiert...
zurück also
QNX/Blackberry ist sicher weil es ein Mikrokernel ist? jein: Blackberry ist vorallem deswegen sicher, weil seine Real Time Funktionen gehärtet sind. Was heisst Real Time?
ein normaler kernel kriegt einen befehl: rechne das und das.. und der kernel rechnet das und das.. wie er halt gerade dazu kommt.. ist das system ausgelastet, dann wartet er, ist das system eingefrohren, dann rechnet er es gar nicht.
ein RT Kernel aber kriegt den befehl: rechne das und das korrekt bis zum zeitpunkt xy, ganz egal was passiert. Und der kernel macht das, weil er die entsprechenden ressourcen auch entsprechend verwalten kann und lieber gerade nicht benötigte komponenten abschiesst, statt die gestellte aufgabe nicht auszuführen
und ja: blackberry ist auch sicher, weil es ein Mikrokernel ist.. zurück wieder zum Monolitischen Kernel, der ja alle Hardwaremodule/Treiber in sich beinhaltet, und trotzdem nur ein Stück Software ist.. was passiert da wohl, wenn, sagen wir, der Treiber für die Druckerverwaltung abschmiert? richtig, der gesammte kernel schmiert ab, das system spielt tot und nichts geht mehr. Und ebenso: wenn im Treiber für die Druckerwerwaltung eine Sicherheitslücke ist, durch die man einen Rootexploid installieren kann, ist der gesammte kernel und damit das gesammte Betriebsystem korrumpiert.
Schmiert aber bei einem Microkernel der Treiber für dir Druckerverwaltung ab, dann sagt das system ganz einfach: hei, du kannst nicht drucken.. aber alles andere läuft ungeniert weiter.. Um den Fehler zu beheben muss man nur den Druckertreiber ersetzen was ohne weiteres im laufenden betrieb funktionieren kann und der Kernel nebenher immer noch die befehle "berechne dies und das korrekt bis zum zeitpunkt xy" ausführen kann.. und wenn eine sicherheitslücke im Druckertreiber ist und man darin schadsoftware einfügen kann, kann ggf ein blödsinn gedruckt werden - aber keine andere komponente des Systems kann angefallen werden (vorausgesetzt, es ist kein Windows, dass Treiber von Drittherstellern mit Kernel/Root Privilegien ausführt xD).
Grundsätzlich aber: ob ein System einen Mikro oder einen Monolitischen Kernel verwendet, sagt zuerst nicht viel über Seine sicherheit aus:
- ein Monolitischer Kernel kann sicherere sein, weil er Treiberwirrwar verhindern kann
- ein Mikrokernel kann sicherer sein, weil fehler in den Treibern nicht das gesammte system korrumpieren
schlussendlich aber liegt es immer daran, wie gut ein Kernel geschrieben ist, wie sauber und geprüft sein Code ist. Ein Mirkokernel machts da leichter, weil hier weniger zu überprüfen ist - dies kompensiert der einzige wirklich aktive Monolitische Kernel (also Linux) aber durch die riesige masse an freiwilligen Programierer weltweit, die den Kernel pflegen.
und gerade im letzten Punkt: der sauberen Programmierung liegt die Stärke von QNX, darin ist QNX so gut, dass die edelsten Automobilfiren und die NASA darauf vertrauen, wenn es darum geht, ausfallsichere Systeme zu Betreiben.
lg
Noob
Blackberry OS 10 rühmt sich aufgrund der Sicherheit des Kernels und hebt dabei gerne auch hervor, dass es ein Microkernel. Das wird gerne so interpretiert, als währe der Kernel sicher WEIL er ein Microkernel ist. Aber ist das wirklich so? oder endgültig so?
Was ist eigentlich ein Microkernel, oder ein Kernel an sich?
Ein Computer, und damit auch ein Smartphone besteht aus verschiedenen Hardwarekomponenten, die zusammengesteckt werden und die durch Programme dazu gebracht werden, irgend was sinnvolles zu tun. diese Programme sind oft in einer sprache geschrieben die sogar für menschen irgendwie einen Sinn ergeben. Das Basic miniprogramm
Code:
100 PRINT "Hallo Welt
200 ENDgibt zum beispile die ausgabe Hallo Welt aus. Aber die Komponenten, aus denen ein Computer besteh können nur strohm aus und strom an. Also muss da eine möglichkeit sein, dieses Hallo Welt in Strom an und Strom aus zu übersetzen, den binärcode.. da kommt dann irgendwas raus wie 0100100111101011010010011100101 oder so.
Nun hat die Hardware als nun etwas das sie lesen kann.. nur.. mit was soll sie printen? und was geschieht mit dem ersten zeichen, wenn das zweite zeichen bearbeitet wird? Wie weiss welches Teil des Computers welches Teil wie angeschlossen ist? Und genau da kommt nun, unter anderm der Kernel zum Zuge.
Ein Kernel ist die unterste Schicht eines Betriebsystems (bootloader/bios und so lassen wir mal aus, denn im grunde sagt jeder bootloader vereinfacht nur: oh, strom toll - hei, kernel, aufwachen, mach mal was) Der Kernel verwaltet nun die Hardwarekomponenten und "abstrahiert" sie, macht sie also für Programme zugänglich. Um auf das Hallo Welt beispiel zurückzukommen: ohne kernel müsste man dem programm sagen: hei prozessor der marke sowieso, typ sowieso sagt Ram marke sowieso typ sowieso in dem und dem abschnitt so und so viel zeichen speicher bereit halten um all die befehle aufzunehmen, die ich für dich hab.. dann lädst du aus dem speicher soweiso meine befehle in den vorher zugewiesenen rambereich um von dort an dieses und jenes ausgabegerät in der und der farbe so und so gross in genau dem und dem bereich punkte an und aus zu machen, damit das aussieht als würde da hallo welt stehen für den menschen der davor steht - arg umständlich so ein programm, das zudem ein massives problem hätte: es würd nur auf einer einzigem Computer laufen, und dort auch nur, wenn immer genau dieselben Komponenten verbaut sind. ein neuer Bildschirm hiesse schon, dass man das Programm neu schrieben müsste.
und da ist wieder der kernel im Einsatz: der Kernel übernimmt das programm und ist dann klug genug zu erkennen, dass dieses Hallo welt, eben auf einen Bildschirm ausgegeben werden soll und adressiert dann die speicher und die Register in der CPU (Und Grafikkarte und und und) eigenständig. Das heisst dann auch: auf jedem Gerät, auf dem derselbe kernel läuft, mehr oder weniger unabhängig von der Hardware läuft ein programm, ohne dass man es umschreiben oder anpassen müsste: denn die programme reden dann nicht mehr mit der Hardware selber, sondern mit dem kernel.. und dieser hat immer dieselbe sprache.
So: was ist nun ein Mikrokernel.. um das zu erklären, gucken wir uns zuerst einen Monolitischen Kernel an (z.b. Linux). Ein Monolitischer Kernel ist im grunde genommen ein riesen Monster einer Hardwaredatenbank.. Darin sind alle möglichen Hardwarekomponenten in ihren Modulen (vulga: Treiber) abgelegt, unzählige grafikkarten, prozessoren, festplatten, Bildschirme und weis der geier was.. alles ist da drin abgelegt, und daher ist es ein Wulst an Programmiercode.. All diese einzelnen kleinen bestandteile für die Hardware gehorchen derselben Sprache. Das heisst: ganz egal auf welcher Hardware ein solcher Monolitischer Kernel läuft: für die Programme und den Andwender verhält es sich genau gleich: es ist nicht zusätzlich zu beachten, keine nachträglichen treiber, nichts. es ist auch möglich, einzelne komponenten des System auszutauschen, ohne dass man das System nachkonfigurieren muss. Grundsätzlich ist es sogar möglich, eine Festplatte auf der ein Monolitischer Kernel installiert ist in einen komplett anderen Computer einzubauen, die Powertaste zu drücken und es läuft, ohne das jemals was gewesen währe.
und was ist nun ein Mikrokernel? im Grunde genommen das pure gegenteil: im Mikrokernel ist nur die notwendigste Hardware abgelegt - meist sehr genau zugeschnitten auf eine ganz bestimmte Hardwarearchitektur (Intel oder ARM z.b) und bietet für weitere Komponenten nur ganz minimale Grundkonfigurationen mit, die gerade soweit reichen, dass es möglich ist, weitere komponenten hinzuzufügen: die treiber. Im Vergleich zu einem Monolitischen Kernel ist ein Mikrokernel ein wirklicher Winziling, und er kann dafür auch entsprechend weniger. Das Klingt zuerst einmal alles wie ein nachteil.. Aber: wie oben schon angedeutet: ein Monolitscher Kernel ist ein Monstrum an Code, kaum zu überblicken, wohingegen ein Mikrokernel sehr übersichtlich ist, und daher fehler darin auch schneller gefunden werden können. Und weil er so klein ist, ist er auch unglaublich schnell, denn er muss nicht unendlich viel unnötiges Zeugs laden. Allerdings, wie gesagt, kann er nicht sehr viel.. Damit ein Mikrokernel die Hardware wirklich verwalten kann, braucht er Treiber für die Hardware, die zusätzlich installiert werden muss und die nebenher läuft. Das heisst aber auch: wird die Hardware umgebaut, müssen die Treiber neu installiert werden, da der Kernel selber die hardware eben nicht direkt verwaltet.
kleiner Exkurs zu einem unsichern Programm, das einen miesen Mikro, bzw Hybriden kernel hat: windows:
nirgens zeigen sich die möglichen Nachteile eines Mikrokernels deutlicher als beim Windows Treiber gemessie.. jeder der mal Direct X installiert hat, weis was ich mein: jedes programm bringt seine eigene direct x version mit, oft sind die programme auch nur für diese eine direct x version zugeschnitten, das heisst, sobald ein anderes programm eine neue direct x version installiert, kackt entweder das programm ab, es muss wieder einmal direct x installiert werden oder es sind sogar mehrere versionen paralell installiert, manchmal sogar so, dass Windows nicht mehr weis, welche version nun berhaupt zum zuge kommt und seine verwirrtheit mit einem schönen blauen Bildschirm quittiert...
zurück also
QNX/Blackberry ist sicher weil es ein Mikrokernel ist? jein: Blackberry ist vorallem deswegen sicher, weil seine Real Time Funktionen gehärtet sind. Was heisst Real Time?
ein normaler kernel kriegt einen befehl: rechne das und das.. und der kernel rechnet das und das.. wie er halt gerade dazu kommt.. ist das system ausgelastet, dann wartet er, ist das system eingefrohren, dann rechnet er es gar nicht.
ein RT Kernel aber kriegt den befehl: rechne das und das korrekt bis zum zeitpunkt xy, ganz egal was passiert. Und der kernel macht das, weil er die entsprechenden ressourcen auch entsprechend verwalten kann und lieber gerade nicht benötigte komponenten abschiesst, statt die gestellte aufgabe nicht auszuführen
und ja: blackberry ist auch sicher, weil es ein Mikrokernel ist.. zurück wieder zum Monolitischen Kernel, der ja alle Hardwaremodule/Treiber in sich beinhaltet, und trotzdem nur ein Stück Software ist.. was passiert da wohl, wenn, sagen wir, der Treiber für die Druckerverwaltung abschmiert? richtig, der gesammte kernel schmiert ab, das system spielt tot und nichts geht mehr. Und ebenso: wenn im Treiber für die Druckerwerwaltung eine Sicherheitslücke ist, durch die man einen Rootexploid installieren kann, ist der gesammte kernel und damit das gesammte Betriebsystem korrumpiert.
Schmiert aber bei einem Microkernel der Treiber für dir Druckerverwaltung ab, dann sagt das system ganz einfach: hei, du kannst nicht drucken.. aber alles andere läuft ungeniert weiter.. Um den Fehler zu beheben muss man nur den Druckertreiber ersetzen was ohne weiteres im laufenden betrieb funktionieren kann und der Kernel nebenher immer noch die befehle "berechne dies und das korrekt bis zum zeitpunkt xy" ausführen kann.. und wenn eine sicherheitslücke im Druckertreiber ist und man darin schadsoftware einfügen kann, kann ggf ein blödsinn gedruckt werden - aber keine andere komponente des Systems kann angefallen werden (vorausgesetzt, es ist kein Windows, dass Treiber von Drittherstellern mit Kernel/Root Privilegien ausführt xD).
Grundsätzlich aber: ob ein System einen Mikro oder einen Monolitischen Kernel verwendet, sagt zuerst nicht viel über Seine sicherheit aus:
- ein Monolitischer Kernel kann sicherere sein, weil er Treiberwirrwar verhindern kann
- ein Mikrokernel kann sicherer sein, weil fehler in den Treibern nicht das gesammte system korrumpieren
schlussendlich aber liegt es immer daran, wie gut ein Kernel geschrieben ist, wie sauber und geprüft sein Code ist. Ein Mirkokernel machts da leichter, weil hier weniger zu überprüfen ist - dies kompensiert der einzige wirklich aktive Monolitische Kernel (also Linux) aber durch die riesige masse an freiwilligen Programierer weltweit, die den Kernel pflegen.
und gerade im letzten Punkt: der sauberen Programmierung liegt die Stärke von QNX, darin ist QNX so gut, dass die edelsten Automobilfiren und die NASA darauf vertrauen, wenn es darum geht, ausfallsichere Systeme zu Betreiben.
lg
Noob
Mikrokernel vs Monolitischer Kernel - Sicherheitsunterschied?
Aucun commentaire:
Enregistrer un commentaire