В вычислительной технике прошивка — это программное обеспечение , которое обеспечивает низкоуровневый контроль над аппаратным обеспечением вычислительного устройства . Для относительно простого устройства прошивка может выполнять все функции управления, мониторинга и обработки данных. Для более сложного устройства прошивка может обеспечивать относительно низкоуровневый контроль, а также службы абстракции оборудования для программного обеспечения более высокого уровня, такого как операционная система .
Прошивки используются в широком спектре вычислительных устройств, включая персональные компьютеры , телефоны , бытовую технику , транспортные средства , компьютерную периферию и многие цифровые микросхемы внутри каждой из этих крупных систем.
Прошивка хранится в энергонезависимой памяти – либо в постоянном запоминающем устройстве (ПЗУ), либо в программируемой памяти, такой как EPROM , EEPROM или flash . Изменение прошивки устройства, хранящейся в ПЗУ, требует физической замены микросхемы памяти – хотя некоторые микросхемы не предназначены для удаления после изготовления. Программируемая память прошивки может быть перепрограммирована с помощью процедуры, иногда называемой перепрошивкой . [2]
Распространенными причинами смены прошивки являются исправление ошибок и добавление функций .
Эшер Оплер использовал термин «прошивка» в статье Datamation 1967 года как промежуточный термин между «аппаратным обеспечением» и «программным обеспечением». Оплер прогнозировал, что компьютерные системы четвертого поколения будут иметь записываемое хранилище управления (небольшую специализированную высокоскоростную память), в которое будет загружена прошивка микрокода . Многие функции программного обеспечения будут перемещены в микрокод, а наборы инструкций можно будет настраивать, загружая разные прошивки для разных наборов инструкций. [3]
По мере того, как компьютеры начали становиться сложнее, стало ясно, что сначала необходимо инициировать и запускать различные программы, чтобы обеспечить согласованную среду, необходимую для запуска более сложных программ по усмотрению пользователя. Это требовало программирования компьютера для автоматического запуска этих программ. Кроме того, поскольку компании, университеты и маркетологи хотели продавать компьютеры непрофессионалам с небольшими техническими знаниями, возникла необходимость в большей автоматизации, чтобы позволить непрофессионалу легко запускать программы для практических целей. Это привело к появлению программного обеспечения, которое пользователь не будет сознательно запускать, и это привело к программному обеспечению, о котором непрофессиональный пользователь даже не будет знать. [4]
Первоначально прошивка противопоставлялась аппаратному обеспечению (самому ЦП) и программному обеспечению (обычным инструкциям, выполняемым на ЦП). Она состояла не из машинных инструкций ЦП, а из микрокода более низкого уровня, задействованного в реализации машинных инструкций. Она существовала на границе между аппаратным обеспечением и программным обеспечением; отсюда и название прошивка . Со временем популярное использование расширило слово прошивка , чтобы обозначать любую компьютерную программу, которая тесно связана с оборудованием, включая BIOS на ПК, загрузочную прошивку на смартфонах, компьютерные периферийные устройства или системы управления на простых потребительских электронных устройствах, таких как микроволновые печи , пульты дистанционного управления .
В некоторых отношениях различные компоненты прошивки так же важны, как и операционная система в работающем компьютере. Однако, в отличие от большинства современных операционных систем, прошивка редко имеет хорошо развитый автоматический механизм обновления для исправления любых проблем с функциональностью, обнаруженных после поставки устройства.
Прошивка компьютера может быть вручную обновлена пользователем с помощью небольшой утилиты. Напротив, прошивка в устройствах массового хранения (жесткие диски, оптические дисководы, флэш-память, например, твердотельный накопитель) обновляется реже, даже когда для прошивки используется флэш-память (а не ПЗУ, EEPROM).
Большинство периферийных устройств компьютера сами по себе являются специализированными компьютерами. Такие устройства, как принтеры, сканеры, веб-камеры и USB-флеш-накопители , имеют внутреннюю прошивку; некоторые устройства также могут допускать обновление прошивки в полевых условиях. Для современных более простых устройств, таких как USB-клавиатуры , USB-мыши и USB-звуковые карты , тенденция заключается в интеграции памяти прошивки в ее микроконтроллер , а не в отдельной микросхеме EEPROM .
Примеры компьютерных прошивок включают в себя:
Потребительские устройства, такие как игровые консоли , цифровые камеры и портативные музыкальные плееры, поддерживают обновления прошивки. Некоторые компании используют обновления прошивки для добавления новых воспроизводимых форматов файлов ( кодеков ). Другие функции, которые могут меняться с обновлениями прошивки, включают графический интерфейс или даже время работы батареи. Смартфоны имеют возможность обновления прошивки по воздуху для добавления новых функций и исправления проблем безопасности.
С 1996 года большинство автомобилей используют бортовой компьютер и различные датчики для обнаружения механических проблем. С 2010 года [обновлять]современные автомобили также используют управляемые компьютером антиблокировочные тормозные системы (ABS) и управляемые компьютером блоки управления трансмиссией (TCU). Водитель также может получать информацию на панели приборов во время вождения таким образом, например, данные об экономии топлива в реальном времени и показания давления в шинах. Местные дилеры могут обновить большинство прошивок автомобилей.
Другие приложения прошивки включают в себя:
Перепрошивка [6] подразумевает перезапись существующей прошивки или данных, содержащихся в EEPROM или модуле флэш-памяти, присутствующем в электронном устройстве, новыми данными. [6] Это может быть сделано для обновления устройства [7] или для смены поставщика услуг, связанных с функцией устройства, например, для смены одного поставщика услуг мобильной связи на другого или установки новой операционной системы. Если прошивка обновляется, это часто делается с помощью программы от поставщика и часто позволяет сохранить старую прошивку перед обновлением, чтобы к ней можно было вернуться, если процесс не удался или если новая версия работает хуже. Были разработаны бесплатные программные замены для инструментов прошивки от поставщика, такие как Flashrom .
Иногда третьи стороны разрабатывают неофициальную новую или модифицированную («вторичную») версию прошивки для предоставления новых функций или разблокировки скрытых функций; это называется пользовательской прошивкой . Примером является Rockbox как замена прошивки для портативных медиаплееров . Существует множество проектов homebrew для различных устройств, которые часто разблокируют универсальные вычислительные функции в ранее ограниченных устройствах (например, запуск Doom на iPod ).
Взломы прошивок обычно используют возможности обновления прошивки на многих устройствах, чтобы установить или запустить себя. Однако некоторые должны прибегнуть к эксплойтам для запуска, поскольку производитель попытался заблокировать оборудование, чтобы предотвратить запуск нелицензионного кода .
Большинство хаков прошивок — это бесплатное программное обеспечение .
Московская « Лаборатория Касперского» обнаружила, что группа разработчиков, которую она называет « Equation Group », разработала модификации прошивки жестких дисков для различных моделей, содержащие троянского коня , который позволяет хранить данные на диске в местах, которые не будут стерты, даже если диск будет отформатирован или очищен. [8] Хотя в отчете «Лаборатории Касперского» прямо не утверждалось, что эта группа является частью Агентства национальной безопасности США (АНБ), доказательства, полученные из кода различного программного обеспечения Equation Group, позволяют предположить, что они являются частью АНБ. [9] [10]
Исследователи из «Лаборатории Касперского» охарактеризовали действия Equation Group как самую продвинутую хакерскую операцию, когда-либо раскрытую, также задокументировав около 500 заражений, вызванных Equation Group, по меньшей мере в 42 странах.
Марк Шаттлворт , основатель компании Canonical , создавшей дистрибутив Ubuntu Linux , описал фирменную прошивку как риск безопасности, заявив, что «прошивка на вашем устройстве — лучший друг АНБ » и назвав прошивку «троянским конем монументальных масштабов». Он утверждал, что некачественная прошивка с закрытым исходным кодом представляет собой серьезную угрозу безопасности системы: [11] «Ваша самая большая ошибка — предполагать, что АНБ — единственное учреждение, злоупотребляющее этим положением доверия — на самом деле, разумно предположить, что все прошивки — это клоака небезопасности, любезно предоставленная некомпетентностью высочайшей степени производителей и компетентностью высочайшей степени очень широкого круга таких агентств». В качестве потенциального решения этой проблемы он призвал к декларативной прошивке, которая описывала бы «аппаратные связи и зависимости» и «не должна включать исполняемый код ». [12] Прошивки должны быть с открытым исходным кодом , чтобы код можно было проверить и верифицировать.
Пользовательские взломы прошивок также были сосредоточены на внедрении вредоносного ПО в такие устройства, как смартфоны или USB-устройства . Одна такая инъекция смартфона была продемонстрирована на Symbian OS на MalCon [13] [14] хакерском съезде . Взлом прошивки USB-устройства под названием BadUSB был представлен на конференции Black Hat USA 2014 [15], демонстрируя, как микроконтроллер USB-флеш-накопителя может быть перепрограммирован для подмены различных других типов устройств с целью получения контроля над компьютером, извлечения данных или шпионажа за пользователем. [16] [17] Другие исследователи безопасности работали дальше над тем, как использовать принципы, лежащие в основе BadUSB, [18] одновременно выпустив исходный код хакерских инструментов, которые можно использовать для изменения поведения различных USB-устройств. [19]
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка )