Przejdź do zawartości

Oprogramowanie sprzętowe

Z Wikipedii, wolnej encyklopedii
Reflektometr optyczny firmy Yokogawa podczas pomiarów długości światłowodu z widocznym na ekranie efektem pracy oprogramowania sprzętowego

Oprogramowanie sprzętowe[1][2], oprogramowanie wbudowane[3][4], oprogramowanie układowe[5][6], oprogramowanie wewnętrzne, mikrooprogramowanie[7][8] (ang. firmware[a]) – oprogramowanie zainstalowane na stałe w urządzeniu, zapewniające podstawowe procedury jego obsługi.

Inną definicją oprogramowania sprzętowego jest kod poniżej systemu operacyjnego (a wręcz poniżej kodu maszynowego komputera) – przykładowo oprogramowanie karty sieciowej nie jest, w przeciwieństwie do sterowników, częścią systemu operacyjnego. Oprogramowanie sprzętowe może być małych rozmiarów (jak w karcie sieciowej) lub stanowić wydzielony system (przykładowo kontrolerem napędów taśmowych 3490E-F01 jest serwer x86 pracujący pod kontrolą systemu operacyjnego Sinix – jednak z punktu widzenia systemu operacyjnego korzystającego z napędów kod ten realizuje zdefiniowane protokołem funkcje sprzętowe).

Nowsze urządzenia mają często możliwość aktualizacji tego oprogramowania, dzięki zapisaniu go na przykład w pamięci flash lub EEPROM.

Historia

[edytuj | edytuj kod]

Ascher Opler użył terminu firmware w artykule Datamation w roku 1967[9]. Początkowo termin ten oznaczał zawartość zapisywalnego fragmentu pamięci CPU, zawierającej mikroprogram, który definiował i implementował zestaw instrukcji komputera, ponadto mógł być przeładowany w celu modyfikacji instrukcji, które procesor był w stanie wykonać. Pierwotnie firmware kontrastowało ze sprzętem komputerowym (CPU) i oprogramowaniem (standardowe instrukcje wykonywane przez CPU). Nie składało się ono z instrukcji maszynowych procesora, lecz z mikrokodu niższego poziomu odpowiedzialnego za implementację instrukcji. Wbudowane oprogramowanie istniało na „pograniczu” między sprzętem a oprogramowaniem, stąd powstała nazwa firmware. Z czasem znaczenie tego pojęcia poszerzyło się do wszystkich danych zapisywanych w pamięci ROM, w skład których wchodziły instrukcje procesora dla BIOS, programu rozruchowego lub aplikacji dedykowanych.

Do połowy lat 90. aktualizacje oprogramowania sprzętowego przeważnie wiązały się z podmianą pamięci je zawierającej (zwykle były nimi układy scalone ROM). Pamięć flash umożliwiała aktualizację bez konieczności fizycznego wyjmowania układów scalonych. Błąd w trakcie procesu aktualizacji mógł permanentnie uszkodzić urządzenie; system jest na to narażony, gdy fragmenty pamięci flash – zawierające oprogramowanie „źródłowe” lub program aktualizujący – zostaną wyjęte i przeprogramowane. Jeżeli proces aktualizacji zostanie gwałtownie przerwany, oprogramowanie może przestać działać prawidłowo i tym samym uruchomienie urządzenia i wznowienie aktualizacji będzie niemożliwe. Aby tego uniknąć, pamięć flash powinna mieć zabezpieczoną sekcję tylko do odczytu, zawierającą oprogramowanie „źródłowe”. Wadą produkcyjną jest to, że oprogramowanie tylko do odczytu nie może być zmodyfikowane i musi być poddane bardzo dokładnym testom.

Zagrożenia

[edytuj | edytuj kod]

Mark Shuttleworth, założyciel firmy Canonical, która utrzymuje dystrybucję Ubuntu, opisał zamknięte oprogramowanie sprzętowe jako zagrożenie bezpieczeństwa, mówiąc, że „oprogramowanie wbudowane w twoim urządzenie jest najlepszym przyjacielem NSA” i nazywa je „koniem trojańskim o monumentalnych proporcjach”. Stwierdził, że niskiej jakości oprogramowanie sprzętowe z zamkniętym źródłem stanowi główne zagrożenie dla bezpieczeństwa systemu[10]: „Twoim największym błędem jest założenie, że NSA jest jedyną instytucją nadużywającą tej pozycji zaufania – w rzeczywistości rozsądne jest założenie, że całe oprogramowanie sprzętowe jest źródłem niebezpieczeństwa, na co składa się najwyższy stopień niekompetencji ze strony producentów, a także najwyższy stopień kompetencji z bardzo szerokiej gamy tego typu agencji”. Jako potencjalne rozwiązanie tego problemu wezwał do deklaratywnego oprogramowania, które opisywałoby „powiązanie sprzętowe i zależności” i „nie powinno zawierać kodu wykonywalnego”[11]. Oprogramowanie sprzętowe powinno być oprogramowaniem typu open source, aby można było sprawdzić i zweryfikować kod.

Niestandardowe włamania do oprogramowania sprzętowego koncentrowały się również na wstrzykiwaniu złośliwego oprogramowania do smartfonów lub pendrajwów. Jedna operacja tego typu na smartfonie z systemem operacyjnym Symbian została zademonstrowana podczas hakerskiej konferencji MalCon[12][13]. Podczas konferencji Black Hat USA w roku 2014 zaprezentowano włamanie do oprogramowania urządzenia USB o nazwie BadUSB[14], pokazując, jak można przeprogramować mikrokontroler pendrajwa, dzięki czemu można „oszukać” różnego rodzaju urządzenia w celu przejęcia kontroli nad komputerem, eksfiltrowania danych lub szpiegowania użytkownika[15][16]. Pozostałe osoby badające kwestie bezpieczeństwa pracowały dalej nad sposobem wykorzystania zasad działania BadUSB[17], wydając jednocześnie kod źródłowy w postaci narzędzi hakerskich, których można użyć do modyfikacji zachowania różnych urządzeń USB[18].

Przykłady urządzeń z oprogramowaniem sprzętowym

[edytuj | edytuj kod]

Systemy preinstalowane w serwerach (np. ESXi na nośniku USB w serwerze) również są nazywane oprogramowaniem sprzętowym.

Zobacz też

[edytuj | edytuj kod]
  1. Spotykane niekiedy tłumaczenie „oprogramowanie firmowe” jest niepoprawne, gdyż przymiotnik firm oznacza tu „stały, niezmienny”.

Przypisy

[edytuj | edytuj kod]
  1. oprogramowanie sprzętowe. Słownik polsko-angielski bab.la. [dostęp 2017-12-14].
  2. Słownik naukowo-techniczny angielsko-polski. [dostęp 2017-12-14].
  3. oprogramowanie wbudowane. Słownik polsko-angielski bab.la. [dostęp 2017-12-14].
  4. firmware. WordReference.com. [dostęp 2021-10-09].
  5. firmware: Informatyczny Słownik Angielsko-Polski Computerworld – Wiadomości IT, biznes IT, praca w IT, konferencje. [dostęp 2017-12-14].
  6. oprogramowanie układowe. Słownik polsko-angielski bab.la. [dostęp 2017-12-14].
  7. Narodowy Fotokorpus Języka Polskiego. [dostęp 2017-06-05].
  8. firmware. Słownik angielsko-polski Diki. [dostęp 2017-12-15].
  9. Opler, Ascher. Fourth-Generation Software. „Datamation”. 13 (1), s. 22–24, styczeń 1967. 
  10. „Linux Magazine”, wydanie 162, Maj 2014, strona 9.
  11. Mark Shuttleworth: ACPI, firmware and your security. 17 marca, 2014. [zarchiwizowane z tego adresu (15 marca, 2015)]. (ang.).
  12. We will be back soon!. malcon.org. [zarchiwizowane z tego adresu (2013-05-26)]. (ang.).
  13. Hacker plants back door in Symbian firmware. H-online.com, 2010-12-08. [zarchiwizowane z tego adresu (21 maja 2013)]. (ang.).
  14. Why the Security of USB Is Fundamentally Broken. 2014-07-31. [zarchiwizowane z tego adresu (2014-08-03)]. (ang.).
  15. BadUSB – On Accessories that Turn Evil. BlackHat.com. [zarchiwizowane z tego adresu (2014-08-08)]. (ang.).
  16. BadUSB – On accessories that turn evil. 2014-08-07. [zarchiwizowane z tego adresu (2016-10-19)]. (ang.).
  17. BadUSB Malware Released – Infect millions of USB Drives. [zarchiwizowane z tego adresu (6 października 2014)]. (ang.).
  18. The Unpatchable Malware That Infects USBs Is Now on the Loose. [zarchiwizowane z tego adresu (7 października 2014)]. (ang.).
  19. Firmware aparatu cyfrowego – co to jest? [online], 16 maja 2003 [dostęp 2009-07-09].