Pull to refresh

Comments 56

https://binarydebt.wordpress.com/2018/10/06/how-does-an-x86-processor-boot/ - детальная статья о x86 загрузке на относительно устаревших процессорах, с тонкостями от проекта coreboot. Более подробно рассказано о этапах инициализации памяти, кэша и передаче управления между ними.

Интересно, а кто-нибудь пробовал использовать устаревшие процессоры для десктопных ПК в качестве микроконтроллеров для DIY-проектов? Ведь на вторичном рынке можно купить такие процессоры по совершенно копеечным ценам, при этом они гораздо мощнее микроконтроллеров, и имеют много ОЗУ. К примеру, Athlon X2 3200+ 2 GHz можно купить всего за 1 доллар, при этом у него 640 кбайт ОЗУ, и 2 ядра. Проблему высокого потребления энергии и тепловыделения можно решить снижением частоты и напряжения питания. Думаю, можно добиться работы без радиатора, и подключения всего нескольких десятков выводов, что позволит обойтись 2..4-слойной платой.

Скорее всего реализовать обвеску будет намного дороже 1 доллара. Начиная с сокета, ПЗУ (или где будет храниться исполняемый код?), USB-интерфейс для прошивки. Как отлаживать?

Сокет не нужен — Athlon можно просто запаять, у него есть подходящие ножки. SPI-ПЗУ стоят копейки, вопрос, как их подключить. Отлаживать можно на частично на десктопе, частично через UART-консоль.

Ну, одним процессором там не обойдется. У процессора нет внешних устройств. Никаких вам GPIO, USART, SPI и т.п. У него, если повезет, есть контроллер памяти, к которому подключается ОЗУ, и у него есть шина, специфичная для данного конкретного семейства. И еще есть куча питаний и куча вспомогательных, но нужных для запуска сигналов. Чтобы со всем этим работать, нужен еще чипсет - набор системных контроллеров (северный и южный мосты плюс всякая обвязка, в более поздних - единый однокристальный хаб), откуда уже появляется набор "общеупотребительных" шин, интерфейсы для накопителей и периферии, интерфейс для флешки биоса и мультиконтроллера, некоторое количество GPIO и "служебных" интерфейсов (SPI, I2C, SMB, JTAG). Так вот, без чипсета к процессору даже флешку подключить некуда. Это вам не Z80 и даже не 68000, где в принципе нужную обвязку можно было на россыпи логики сколхозить. Так что использование в качестве МК старого "Атлона" в обязательном порядке тянет в конструкцию материнскую плату под него. То, что в народе зовется "мамоконтроллер".

Согласен, получается геморрой с двумя Р и одной ОЙ. Это не 386 или 286 (?) DNM Vortex. Z80 или 68k проще, но малоинтересны на этот момент. Если честно я не спец по этой теме.

Можно попытаться подключить вместо северного моста дешевый микроконтроллер со всей нужной периферией, вроде STM32G030C, или STM32F030C. А на процессоре реализовать, к примеру, локальное распознавание речи при помощи небольшой нейросети. Ведь Athlon X2 3200+, к примеру, поддерживает SSE3. Наличие нескольких напряжений питания — это плюс, это позволяет легче подключить его к другим микросхемам, ведь напряжению питания интерфейсов не нужно быть очень низким вместе с питанием ядер для того, чтобы процессор не сильно много потреблял и не сильно нагревался. Для питания процессора, наверное, можно использовать стабилизатор с неисправной материнской платы — они тоже очень дёшевы, и на материнских платах обычно выходит из строя южный мост.

Эээээ, вы собираетесь подключать STM32F030C к каналу HyperTransport с тактовой частотой 1 ГГц?

HyperTransport по стандарту может работать и на частоте 200 МГц. А если снизить базовую тактовую частоту процессора в 6,5 раз, то эти 200 МГц превратятся в 30 Мгц — тут STM32F030C уже может справиться, если постараться.

 использование в качестве МК старого "Атлона" в обязательном порядке тянет в конструкцию материнскую плату под него.

Короче, в любом случае приходим к обычному настольному ПК на базе этого старого "Атлона" и наша самоделка становится периферией к нему, вот вам и использование устаревшего ЦП в качестве "микроконтроллера" :).

Кстати, а там разве нет JTAG?

Энтузиасты делают на основе старых десктопных плат контроллеры для станков с ЧПУ.

Ну, одно время десктопные процессоры можно было найти в виде контроллера в каком-нибудь девайсе, те же ядра Motorola 68K были популярны в виде микроконтроллеров, да и клоны от 86 до Pentium выпускались какой-нибудь кампанией с Тайваня, вот вам например кухонный девайс на клоне то ли 486, то ли Первопня:

https://www.youtube.com/watch?v=BdSJgoP2a88

Да и вообще старые процессоры можно хоть на breadboard развести:

https://www.youtube.com/watch?v=wSiDSdHS2QQ

Если вы имеете в виду современное десктопное железо, то я думаю там будет очень много геморроя, как описано в статье, где микроконтроллер конфигурирует микропроцессор чтобы тот запустил сам себя в нужном режиме. Я как-то смотрел описание того, чем занят мультиконтроллер в ноутбуке, и у него есть своя внутренняя прошивка и без неё ничего не заработает. Короче, мрак.

Как разработчик такой электроники и параллельно делатель своих DIY проектов кратко могу сказать, что скорее отрежу себе руку. Да, массовые CPU хорошо оптимизированы для разводки на минимальном количестве слоёв. В граммах это означает, что такая плата разводится примерно вдвое быстрее, чем аналогичное по сложности решение на FPGA, потому что во время оптимизации чипа кто-то когда-то делал несколько итераций тестовых плат, где задачей было вместо 24 слоёв ограничиться 6 и добиться того, чтобы почти все интерфейсы можно было вывести только на TOP/BOTTOM, т.е. в пределе вроде БЫ могло БЫ хватить 4 слоя. В реальности есть ещё питание и signal integrity, реалистично развестись на 6-8 слоях. По цене изготовления такие платы, конечно, подешевели на порядки, но не так сильно, чтобы войти в категорию DIY. Реалистичный сценарий -- вставить в родную мамку и накатить любимую ОС. Для DIY задач, которые теоретически могут потребовать такие решения, есть SOC модули, для них достаточно развести только свою плату для интерфейсов. Вот там да, достаточно часто хватает 4 слоёв.

И для материнских плат нижнего ценового сегмента поколения Core2 4 слоев хватало, как ни странно. При достаточно сложной системе питания и интерфейсов памяти и PCIe.
При таком использовании, кмк, сразу есть ещё две проблемы: такие процессоры могли не быть приспособлены к работе с внешними IO без обязательного комплекта периферии и детальную документацию на разработку печатных плат тоже практически не достать.

Проблемы с signal integrity возникнут, если интерфейсы будут работать на штатных частотах. Но ведь скорее всего частоты интерфейсов тоже можно снизить до десятков мегагерц, и тогда на 4 слоях должно работать.

В таком случае напаркуа Athlon X2 3200+?

Я уже написал выше — например, чтобы распознавать речь при помощи нейросети. Для того, чтобы передать процессору голос, параллельной шины и десятков мегагерц вполне достаточно. А ядра будут работать, скажем, на 500 МГц, что вместе с SSE3 и быстрой памятью даст хорошую производительность на такой задаче.

Напомнило проект из 00х:

К сожалению, 10+ лет назад не удалось связаться с автором, который делал этот проект как студенческую лабораторную. Однако, энтузиастами форума NedoPC удалось "восстановить" примерную, вероятную но теоретически рабочую схему данного устройства:

Прошивку на него достать, конечно, нет возможности.

Наверное, 486 самый мощный процессор из всей линейки, которую радиолюбитель сможет запустить в любительском проекте с минимальной обвязкой.

Сейчас проще брать raspberry (и десятки других аналогов) вместо вот такой "минимальной" обвязки.

Всё дело лишь в том, что является ли малинка "устаревшим процессором для десктопных ПК" который предполагается использовать "в качестве микроконтроллеров для DIY-проектов".

Кажется, последние версии АРВИД были на 80286...

Вам действительно кажется. Хоть все версии АРВИД были строго для шины ISA16, но последняя модель выпущена в 1995 году, а согласно вики ПО существует для операционных систем DOS и Windows вплоть до Windows XP SP3, а также Linux, FreeBSD и OS/2. Сам лично видел как чел работал с ним на AMD K5 под Windows 95.

Не-е-е. Сама плата была сделана на 286-м, в качестве контроллера. А не комп, куда он ставился :)

У меня в Германии открывается

А сколько в Германии стоит сокет для этого процессора? И во сколько Вам обойдется плата и монтаж на нее сокета либо процессора?

Затем встанет вопрос о софте и IDE

В итоге проще взять SoC за 10 баксов, который по BLE может годами работать от батарейки, чем что-то городить на этом барахле.

Я уже писал выше, что сокет не нужен — процессор можно запаять обычным паяльником, и плата нужна не такая сложная как материнка десктопа — потому что частоты можно использовать гораздо более низкие, и не много выводов.

А что будет если провести атаку MITM на SHA256 публичного ключа и подменить сам ключ в IBB ? позволит ли это загрузить скомпрометированную прошивку ?

А как вы себе это представляете, если всё так, как описано? Если хэш ключа действительно намертво прибит к чипсету, то остаётся только брать паяльник, а после этого смысл этой атаки неясен

то есть , смысл в атаке TOCTOU , от которой защищаются есть , хотя там нужно выпаять флешку и поставить эмулятор флеш памяти , а атака MITM бесмысленна ?

Возможно, я неверно вас понял. Что мы добиваемся, подменив ключ? Загружаем левый образ в secure boot? Но если у нас уже есть физический доступ к компу, не проще ли, к примеру, встроить какую-нибудь вирусню в uefi? Чипсет и проц, насколько помню, общаются через pci-e (поправьте, если не так), то есть нужно найти эти дороги, перерезать, между чипсетом и процом поставить другой контроллер, который в определённый момент подменит ключ, всё так? Идея реальна, если дороги не в каком-нибудь 3-4 слое 8 слойной платы, но от такого типа атак никак не защититься, разве что затолкать чипсет/ключ в проц

то есть , смысл в атаке TOCTOU , от которой защищаются есть , хотя там нужно выпаять флешку и поставить эмулятор флеш памяти , а атака MITM бесмысленна ?

Для TOCTOU эмулятором флэш-памяти может быть простая ПЛИС с несложной прошивкой, которую может написать студент.

Для вашей первоначальной задумки с MITM нужно обойти не только фьюзы, но и криптографию. В других статьях пишут, что фьюзы располагаются внутри отдельного интеловского чипа (ME), прошивка которого подписана и в котором есть ключ. Т.е. как минимум в теории исходный интеловский чип и ME могут установить защищённый канал со взрослой криптографией и обменяться произвольной инфой.

Про эмулятор флэш как с языка сняли

Кстати, по вашей же ссылке интересная инфа, что зловред, в теории, (если производитель оборудования такое допустил) может прописать свой собственный ключ, после чего фиг что загрузишь

Для MITM на PCIe может быть простая ПЛИС с несложной прошивкой, которую может написать студент, в этом нет ничего сложного


О победе над какой криптографии вы говорите ? сейчас вопрос о полном обходе этой криптографии , существующий ключ подменяется известным , но система его не примет, потому что его SHA256 не совпадает с тем что в чипсете, но имея ключ мы можем подсчитать SHA256 и подменить на корректную для нас на лету

Intel ME это подсистема в чипсете , и не имеет значения кто хранит фьюзы до тех пор пока их нужно передавать в процессор для сравнения.

По поводу проблемы с 8-10-16 слойными платами , возможен вариант как реализуют сейчас китайцы процессоры "мутанты", когда они делают из текстолита переходник в десктопный сокет поверх которого сокет мобильный к которому припаивают процессор. Такого рода переходник можно сделать сразу с плис на борту с питанием и даже разъемом для отладки

Полагаю, автор предыдущего комментария имел в виду это

Intel ME boot ROM is implicitly trusted as the root.

ME ROM with proper fuses blown verifies ME firmware with Intel's key

ME firmware passes security policy and OEM key to Intel CPU

CPU boot ROM is implicitly trusted and it verifies the ACM with Intel's key

ACM verifies IBB with OEM key from ME firmware

Intel ME boot ROM is implicitly trusted as the root

При таком раскладе подмена ключа действительно ничего не даст, поскольку ключ в чипсете зашифрован OEM ключом, находящимся в ME (который я не понял, на каком этапе и кто зашивает)

И для чего, в итоге, мы проводим такую атаку? Можно и к выводам ОЗУ подключиться, можно к sata, pci-e, смысл-то какой? Левую флешку (которая на самом деле микроконтроллер) можно припаять, так что никто не заметит подвоха, а что с этим бутербродом?

P,S, наверное, ключ чипсета шифруют тоже приватным ключом, а расшифровывают публичным, но это не точно. Надо звать экспертов

Смысл очень большой , в Intel CPU есть так называемый security enclave который позволяет выполнять защищённый код с проприетарными данными которые можно было бы утащить или ключи шифрования проприетарного контента , которые полагаются на то что вы не сможете достать декодированный поток из CPU

по поводу кто кого загружает - то там загрузка туда-сюда бросает

ещё любопытное чтиво на тему зачем взламывать компьютер к которому у вас есть физический доступ
https://habr.com/ru/companies/pt/articles/430132/
и

https://www.ptsecurity.com/ru-ru/about/news/neustranimaya-uyazvimost-v-chipsetah-intel-ugrozhaet-rabochim-stanciyam-i-pravoobladatelyam/

Почитал про эти enclave, вероятно, я опять не понял, что вы имеете в виду, но ведь если вся память и код шифрованы в этом режиме, что поменяет подмена ключа?

Статьи интересные, тем, кто смог такое провернуть — отдельный респект, всё смогли взломать даже без паяльника

Вы опять смотрите со стороны грубой силы , подмена ключа позволит коду выдать себя за авторизованный на самом низком уровне цепочки доверия, что впоследствии позволит внедрить свой код внутрь анклава , который уже оттуда будет сливать ценные данные

Но ведь энклавы, вроде бы, изолированы друг от друга? С другой стороны, прочитал и про случаи, где удавалось вытаскивать данные через какие-то уязвимости. А в чём будет разница между вредоносным анклавом, который создан через ОС и тем, что создан через ME? (вроде как для ME нет никаких привилегий в анклавах, или же нет?)

P.S. Зря я полез в эту тему, надо было разобраться сначала

А в чём будет разница между вредоносным анклавом, который создан через ОС и тем, что создан через ME? (вроде как для ME нет никаких привилегий в анклавах, или же нет?)

В том, что ОС и ключи в ней — под контролем владельца компьютера.
ME — нет.
Существуют задачи когда автор кода не доверяет владельцу компьютера но тем не менее — хочется этот код запускать.
Ну там — компьютер — в облаке. Или DRM.

Мне всё-таки кажется, что ваш пример больше подходит для случая, когда человек доверяет железу. (которое сам купил), но на самом деле железу доверять нельзя. А в случае с провайдером и софтовые уязвимости тех же энклавов будут иметь тот же эффект. Но спорить не буду, спасибо за разъяснения

Так прошивка, ME модуля где хранится? В той же spi-флэшке, так же как и вся не тривиальная криптография которая на этом модуле выполняется. Раньше насколько я помню, проблема подмены была в том, что таблицы Хафмана для декодирования были прошиты прямо в железке ME.

Ага, вы правы, я уже совсем запутался в этой системе, где какие ключи, прошивки, и кто, что и когда делает. Сейчас перечитал всё ещё раз — теперь понятно вроде

Соседняя статья про плюс-минус то же самое (кучно пошло в этот раз): https://habr.com/ru/articles/730240/

Про MITM - посмотрите вот эту презентацию, она как раз про MITM-атаку через эмулятор SPI-флеша и про то, что именно BootGuard сломать не вышло - его писали люди, которые в курсе, а вот все, что было сразу за ним - сломалось без проблем.

Возникает вопрос - зачем современному десктопному CPU режим совместимости не то, чтобы с x86, а даже с реальным режимом x86?

Легаси же. Вы всё ещё способны загрузить на него DOS.

Зачем это на десктопе? Чтобы запустить fdisk с дискетки?

Представьте себе да. Была же попытка сбросить легаси в IA-64 в серверном сегменте,. Однако всё равно всё скатилось до AMD64 (EM64T), который легаси это подхватил. Наверное, рыночек порешал.

Очень удивился тому, как на современном ноутбуке запускается DOS из комплекта. DOS представляет собой эмулятор запускаемый после загрузки Linux. Т.е. весь этот Legacy ему и не нужен :) И что-то я сомневаюсь, что есть реальные примеры запуска чистого DOS сецчас

Возможно, вы путаете GRUB и Linux? Проблема запуска DOS на современных процессорах лишь в BIOS. Если точнее: UEFI не поддерживает DOS. Но иногда с отключенным Secure Boot загрузить удаётся. Примеры отлично гуглятся на Youtube.

На своем ноутбуке точно не путаю. Именно полноценный Linux и запускающийся в нем эмулятор. Был очень удивлен

Если это DosBox то я охотно поверю. Потому что на некоторых ноутбуках BIOS сильно урезан и более того - там строгая заточка под Windows Boot Manager и Secure Boot не отключается.

Sign up to leave a comment.

Articles