Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: SörenK am 21. February 2013, 17:14

Titel: Wo wird UEFI gespeichert?
Beitrag von: SörenK am 21. February 2013, 17:14
Hallo zusammen,
ich denke bereits seit längerem darüber nach, für jeden CPU (oder für einige) eine Software bereitszustellen, die das selbe macht wie das BIOS oder UEFI. Beim BIOS weiß ich zwar, dass es auf einem externen Chip liegt, aber wo UEFI liegt, weiß ich leider nicht. Meine Frage ist nun, wo UEFI gespeichert ist und ob es sich lohnen würde, eine eigene Software zu entwickeln, den ich finde die Sicherheitsaspekte von UEFI bedenklich.
Viele Grüße, Sören
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Manello am 21. February 2013, 18:56
Ich weis da nicht viel genaues aber kann dir ein paar sachen darüber sagen:

- Der Prozessor hat einen eigenen "Speicher", wobei ich weniger glaube dass du den dafür nutzen willst, geschweige denn dass es geht.
- Es gibt ein UEFI chipset, wobei ich denke dass dies jeder pc hat? (<-- leg mal nicht so viel wert auf diese aussage)
- Oder ich könnte mir vorstellen dass man das UEFI auf dem BIOS chip speichert, das bios sozusagen überschreibt, es wäre
sonst Schwachsinn 2 BIOS zu haben.

Was ich dir garantiert sagen kann ist, dass es nicht auf der
Festplatte liegt, da das BIOS die Festplatte booten muss.



Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: SörenK am 21. February 2013, 20:18
Das was ich weiß:
BIOS:
 - ist ein externer Chip auf der Hauptplatine, kann neu geflasht werden, z.b. beim BIOS-Update
 - der Code ist offen, jeder kann ihn kontrollieren
 - das BIOS ist schon sehr alt und demnach veraltet, weshalb UEFI entwickelt wird/ist.
UEFI:
 - der Code ist nicht offen, nur Entwickler können ihn einsehen (Intel, Microsoft, Apple sowie einige andere Chiphersteller)
 - benötigt bereits beim Bootvorgang eine Internetverbindung
 - der Bootloader, wie beim BIOS, ist inbegriffen
 - andere Betriebssysteme als Windows oder MacOS können nur Installiert werden, wenn speziele Funktionen aktiviert sind. Ein Unerfahrener dürfte demnach Probleme haben, Linux zu installieren
Und dadurch, das der Code ebend nicht offen ist, denke ich, dass es einige Sicherheitsfallen geben wird. Im schlimmsten Fall könnte es sein (nur eine Idee, weiß nicht, ob es möglich ist), dass die Gesamte Festplatte übers Internet verschickt wird. Zudem weiß ich nicht, ob UEFI nach dem Booten des Betriebssystems abgeschaltet wird. Wäre es noch an, könnte es Daten mitlesen. Und da ich ein zu 100% sicheres Betriebssystem entwerfen und Programmieren will, stellt dies eine Gefahr dar. Viele Grüße, Sören
PS: Sollte etwas nicht stimmen - korrigiert mich bitte :D
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Manello am 21. February 2013, 21:23
Zitat
- der Code ist offen, jeder kann ihn kontrollieren
Er ist nicht ganz offen, da brauchst du ein paar passwörter/tricks und kniffe um daran zu kommen, aber
mit ein bischen anstrengung schafft man es ;)
Also wenn du sowas machst überschreibe doch einfach den BIOS CHIP, und ACHTUNG!
wenn du es mit deinem eigenen BIOS versemmelst, und der pc nicht mehr bootet hast du ein problem ;)
also nimm einen alten computer als testhardware, und nicht so einen wertvollen^^

Edit   
Achja und um assembler wirst du nicht herumkommen da dass bios sehr hardware nah liegt und sonst noch solltest du ueber ports und schnittstellen bescheid wissen, aber ich denke du weist sowas ;-)
Du schreibst dass vivian system? Da moechte ich mal morgen per pm mit dir darueber reden;-)
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Martin Erhardt am 21. February 2013, 22:36
Also wenn du sowas machst überschreibe doch einfach den BIOS CHIP, und ACHTUNG!
Problem ist nur, dass Das Bios auf EEPROM speichern gespeichert wird dieser speicher kann zwar addressiert werden von der Cpu wie, steht aber für "Read Only Memory" mit Überschreben is also nix, das lässt sich höchstens einmal beschreiben oder muss schon mit Inhalt gefertigt werden). Man könnte den EEPROM in dem Bios vllt ersetzen durch einen frisch gebrannten, aber
ich denke das der fest auf dem Motherboard verlötet ist, gibt ja kein Grund den mal auszutauschen, oder? ;)
Neuere Flash-EEPROMs kann man schon neu reflashen, sogar so schnell das er in USB-Sticks eingesetzt wird dort greift dann aber ein Mikro-Controller auf die ROM zu und nicht die eig CPU. (Linkshttp://www.searchstorage.de/themenbereiche/storage-hardware/halbleiterspeicher/articles/115148/index2.html (http://www.searchstorage.de/themenbereiche/storage-hardware/halbleiterspeicher/articles/115148/index2.html))
wenn du es mit deinem eigenen BIOS versemmelst, und der pc nicht mehr bootet hast du ein problem ;)
Wenn du eine neue Firmware proggst bootet erst mal gar nichts
Und dadurch, das der Code ebend nicht offen ist, denke ich, dass es einige Sicherheitsfallen geben wird. Im schlimmsten Fall könnte es sein (nur eine Idee, weiß nicht, ob es möglich ist), dass die Gesamte Festplatte übers Internet verschickt wird. Zudem weiß ich nicht, ob UEFI nach dem Booten des Betriebssystems abgeschaltet wird. Wäre es noch an, könnte es Daten mitlesen. Und da ich ein zu 100% sicheres Betriebssystem entwerfen und Programmieren will, stellt dies eine Gefahr dar. Viele Grüße, Sören
PS: Sollte etwas nicht stimmen - korrigiert mich bitte :D
Wer? wo? was? verschickt dein BIOS deine Festplatte ^^? Und ein 100% sicheres OS ist eins das gar keine Programme ausführt also eig kein OS.


Eig finde ich aber schon, dass eine eigene Firmware recht interressant ist. Gut Ich will erst mal ein OS auf die Beine stellen.
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Svenska am 22. February 2013, 02:22
Hallo,

so viel Unwissenheit und Fehlerhaftigkeit auf einem Haufen... ich versuche mal, einiges klarzustellen. Ganz unten gibt es zwei Links für Details, wenn ihr meinem Beitrag nicht glaubt.

ich denke bereits seit längerem darüber nach, für jeden CPU (oder für einige) eine Software bereitszustellen, die das selbe macht wie das BIOS oder UEFI
Das funktioniert nicht, da BIOS/UEFI nicht besonders CPU-spezifisch sind, sondern sehr stark Mainboard- und Chipsatz-spezifisch. Du musst also für jedes einzelne Mainboard eine eigene Software schreiben. Schaue dir Coreboot an, dann siehst du, was da möglich ist. Übrigens: Dokumentation gibt es von den Mainboard-Herstellern nicht und damit nutzt dir ohne sehr viel Wissen auch die Chipsatzdokumentation nichts. Coreboot wird mindestens von AMD und Google unterstützt.

Beim BIOS weiß ich zwar, dass es auf einem externen Chip liegt, aber wo UEFI liegt, weiß ich leider nicht.
Das UEFI ist der Nachfolger vom BIOS und liegt daher im gleichen Chip, in dem früher das BIOS lag. Die Chips sind nur größer, da UEFI deutlich komplexer ist als BIOS.

- Der Prozessor hat einen eigenen "Speicher", wobei ich weniger glaube dass du den dafür nutzen willst, geschweige denn dass es geht.
Dieser Speicher heißt "Cache" und kann sehr wohl als RAM genutzt werden. Dafür musst du aber wieder den Chipsatz sehr genau kennen. Coreboot nutzt diese Technologie, bevor der RAM funktioniert.

Es gibt ein UEFI chipset, wobei ich denke dass dies jeder pc hat?
Falsch. UEFI ist eine Software, kein Chipset.

Oder ich könnte mir vorstellen dass man das UEFI auf dem BIOS chip speichert, das bios sozusagen überschreibt, es wäre sonst Schwachsinn 2 BIOS zu haben.
UEFI und BIOS tun dasselbe. Wenn du ein UEFI im Kompatiblitätsmodus betreibst, erscheint es dem Betriebssystem gegenüber wie ein BIOS.

Was ich dir garantiert sagen kann ist, dass es nicht auf der Festplatte liegt, da das BIOS die Festplatte booten muss.
Die Festplatte wird ganz sicher nicht gebootet... aber du hast recht, der Festplattentreiber für auf dem Mainboard integrierte IDE- oder SATA-Schnittstellen ist im BIOS (oder UEFI) integriert. Wenn du die Festplatten allerdings nachrüstest (SCSI oder ein PCI-RAID-Controller), dann enthält der ein eigenes ROM mit seinem eigenen Treiber, den das BIOS dann nutzen kann, um von dort angeschlossenen Festplatten zu starten. Das Suchwort hierbei ist Option ROM. Gleiches gilt übrigens auch für die Grafik: Der Grafiktreiber ist für Onboard-Grafikkarten im BIOS-/UEFI-Chip enthalten, bei Grafikkarten ist er in einem Chip in der Grafikkarte enthalten. (Wenn das Mainboard noch ISA-Steckplätze hat, enthält das BIOS auch Treiber für MDA- und CGA-kompatible Grafikkarten. Also maximal 80x25 Text und/oder 640x200 Grafik mit 1 Bit Farbtiefe. Die passende Hardware ist dann aber >25 Jahre alt und passt nichtmal an heutige Bildschirme.)

BIOS: ist ein externer Chip auf der Hauptplatine, kann neu geflasht werden, z.b. beim BIOS-Update
Oft, aber nicht immer. Der Speicher kann auch im Chipsatz integriert sein und ist dann kein eigener Chip. Alte Mainboards (486 und älter) hatten EPROMs oder ROMs, die sind dann nicht oder nur umständlich aktualisierbar.

BIOS: der Code ist offen, jeder kann ihn kontrollieren
Falsch. Die meisten BIOSse sind von American Megatrends (AMI) oder Phoenix, sie werden kommerziell an die Mainboardhersteller vertrieben und von denen an die Hardware angepasst. Der Code ist verschlossen.

das BIOS ist schon sehr alt und demnach veraltet, weshalb UEFI entwickelt wird/ist.
Das BIOS, was du auf deinem Computer hast, ist ziemlich neu (vermutlich neuer als die Hardware). Die zugrundeliegende Technologie und insbesondere die Schnittstelle zum Betriebssystem ist aber wirklich antik.

UEFI: der Code ist nicht offen, nur Entwickler können ihn einsehen (Intel, Microsoft, Apple sowie einige andere Chiphersteller)
Teilweise falsch. Der Kern von UEFI ist meines Wissens offen, der Code einsehbar. Aber er wird von den Mainboardherstellern genommen und an die Hardware angepasst; die Änderungen sind geheim.

benötigt bereits beim Bootvorgang eine Internetverbindung
Falsch.

der Bootloader, wie beim BIOS, ist inbegriffen
Das BIOS hat einen Bootloader, der (vereinfacht) heißt "starte den ersten Sektor der Festplatte". Das UEFI hat einen Bootloader, der heißt "lade eine Datei von der Festplatte, analysiere sie und führe sie aus". Mit beiden Techniken kann man Betriebssysteme starten, in beiden Fällen bringt ein Betriebssystem einen eigenen Bootloader mit, der an das Betriebssystem angepasst ist. Das darf gerne auch GRUB sein, der dann Multiboot bereitstellt...

andere Betriebssysteme als Windows oder MacOS können nur Installiert werden, wenn speziele Funktionen aktiviert sind. Ein Unerfahrener dürfte demnach Probleme haben, Linux zu installieren
Du meinst Secure Boot, welches man abschalten muss, um nicht signierte Betriebssysteme zu starten. Es gibt bereits einen mit dem Microsoft-Key signierten Bootloader für Linux, aber bisher ist das alles noch ziemlich experimentell. Das ändert sich aber.

Und dadurch, das der Code ebend nicht offen ist, denke ich, dass es einige Sicherheitsfallen geben wird.
Gibt es mit BIOS auf dem PC seit 1981 (dem Erscheinen des ersten PC), das ist alles nichts neues.

Im schlimmsten Fall könnte es sein (nur eine Idee, weiß nicht, ob es möglich ist), dass die Gesamte Festplatte übers Internet verschickt wird.
Theoretisch denkbar, würde ich mir aber keinen Kopf drüber machen. Es ist einfacher, dein Betriebssystem zu hacken und nur die Teile der Festplatte zu verschicken, die interessant sind...

Zudem weiß ich nicht, ob UEFI nach dem Booten des Betriebssystems abgeschaltet wird.
Wird es - wie auch das BIOS - nicht, da es unter anderem für Stromsparfunktionen und andere Dinge benötigt wird.

PS: Sollte etwas nicht stimmen - korrigiert mich bitte :D
Soll ich dazu noch was sagen?

Er ist nicht ganz offen, da brauchst du ein paar passwörter/tricks und kniffe um daran zu kommen, aber mit ein bischen anstrengung schafft man es ;)
Ein BIOS-Passwort zu knacken ist nicht dasselbe, wie den Quellcode des BIOS zu bekommen.

Achja und um assembler wirst du nicht herumkommen da dass bios sehr hardware nah liegt und sonst noch solltest du ueber ports und schnittstellen bescheid wissen, aber ich denke du weist sowas ;-)
Vermutlich wissen weder er noch du, was da an Wissen nötig ist.

Problem ist nur, dass Das Bios auf EEPROM speichern gespeichert wird dieser speicher kann zwar addressiert werden von der Cpu wie, steht aber für "Read Only Memory" mit Überschreben is also nix, das lässt sich höchstens einmal beschreiben oder muss schon mit Inhalt gefertigt werden).
Falsch.
(a) EEPROM ist "electronically eraseable read only memory", kann also sehr wohl elektrisch gelöscht werden (meist mit höherer Spannung). Werden seit 15 Jahren nicht mehr in PCs verbaut (Ausnahmen bestätigen die Regel).
(b) Einmal beschreibbare Bausteine nennt man PROMs (programmable read only memory) und mit Inhalt gefertigte Bausteine nennt man "mask-programmed ROMs". Die benutzt man, wenn man Millionen identischer Chips produziert, die man eher wegschmeißt als aktualisiert (z.B. Tamagotchis). Werden seit 20 Jahren nicht mehr in PCs verbaut (Ausnahmen bestätigen die Regel).
(c) SPI-Flash-Bausteine werden über Befehle angesprochen und da gibt es auch Befehle zum Löschen und neu Beschreiben.

Man könnte den EEPROM in dem Bios vllt ersetzen durch einen frisch gebrannten, aber ich denke das der fest auf dem Motherboard verlötet ist, gibt ja kein Grund den mal auszutauschen, oder? ;)
Hängt vom Mainboard ab. In Notebooks ist das üblicherweise festgelötet, in normalen Mainboards gesockelt.

Neuere Flash-EEPROMs kann man schon neu reflashen, sogar so schnell das er in USB-Sticks eingesetzt wird dort greift dann aber ein Mikro-Controller auf die ROM zu und nicht die eig CPU.
Flash ist nicht EEPROM. Ansonsten ist das technisch zwar richtig, wenn du die Drähte zwischen CPU und Flash betrachtest, aber die gibt es im PC nicht (da ist der Chipsatz zwischen). Von daher, Thema verfehlt. SPI-Flash ist in der Regel deutlich langsamer als das, was in USB-Sticks verbaut wird.

Eig finde ich aber schon, dass eine eigene Firmware recht interressant ist. Gut Ich will erst mal ein OS auf die Beine stellen.
Schaut euch mal die Vorträge zu Coreboot von den verschiedenen Chaos-Kongressen an, hier von 2008 (http://ftp://ftp.ccc.de/congress/25c3/video_h264_720x576/25c3-2970-en-coreboot_beyond_the_final_frontier.mp4) und hier von 2009 (http://mirror.fem-net.de/CCC/26C3/mp4/26c3-3661-de-coreboot_adding_support_for_a_system_near_you.mp4), beide Vorträge sind von einer Person und inhaltlich verschieden.

Rechtschreibfehler könnt ihr behalten.

Gruß,
Svenska
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: SörenK am 22. February 2013, 22:45
Um demnach ein verdammt sicheres OS auf die Beine zu stellen, braucht man Insiderwissen von Intel und Co, bzw. arbeitet wie Apple mit eigenen PC's, oder?
Und danke für die verbesserung  :wink:
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: chris12 am 23. February 2013, 00:14
um ein extrem sicheres os auf die beine zu stellen schreibe man in die bedienungsanleitung vom computer, dass der stecker nicht in die steckdose soll ...

(offtopic ... sorry, aber ich konnte nicht anders ^^)
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: SörenK am 23. February 2013, 14:15
Stimmt ja auch - aber die Kunst ist es ebend, ein sicheres OS fertigzustellen, welches Internet usw. unterstützt. Dies könnte man z.B. erreichen, wenn alle Programme auf der Sicherheitsstufe 0 laufen und es bei jedem nicht erlaubten zugriff (z.B. auf das Internet oder spezielle Dateien) eine Fehlermeldung gibt.
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Svenska am 23. February 2013, 17:09
Das tut man aber nicht, indem man das BIOS ersetzt...
Titel: Re: Wo wird UEFI gespeichert?
Beitrag von: Dimension am 23. February 2013, 18:10
geh einfach mal davon aus, dass wenn es so einfach wäre jemand das schon längst gemacht hätte.