при всем своем уважении к zerg, я вынужден сказать Бред-2.
Но вы ведь не будете отрицать, что в работе микропрограммы процессора бывают ошибки? А ещё то, что бывают архитектурные ошибки? Прикол с первым пнём напомнить?
Отрицать не буду. Я это лучше Вас знаю. Достаточно посмотреть на ерраты (errates) современных процов и микроконтроллеров (далее -- МК), чтобы одеть на башку ведро и прыгнуть с балкона со словами "Русские наступают!" Чего там только нет! Каких только ошибок в них не описано!
Только что закинул в EBV заявку на участие в конкурсе разработчиков. Участникам высылается халявная плата с микроконтроллером STM32F10x на борту и программатор. Победителей ждет мопед Харлей. Гы-ы! Замануха для разработчиков, как потенциальных потребителей. ST Microelctronics так спешила первой прийти на рынок со своими Кортексами (Cortex), что наделала в них кучу ошибок. И я знаю про эти ошибки, знаю, что STM-ы не блещут на фоне LPC17xx. Просто мне интересно поиграться с Кортексом, а покупать его -- жаба давит.
Да, я отвлекся. Так вот, ошибки у STM на столько глупые, что ни о каком заложенной интеллектуальной бомбе, которая сработает по приказу из Пентагона нет и речи! Фигня это все! Выдумки некомпетентных людей, насмотревшихся развлекательных фильмов.
И все мы знаем, каким образом повышается сейчас производительность устройств ввода вывода - за счёт DMA. То есть размещение информации в ОЗУ происходит, зачастую, без ведома ЦПУ. Так что же мешает послать на сетевуху intel (заострим внимание на них, т.к. именно эта быдлоконторка прославилась своим дырявым crystal beach/dma для ethernet девайсов) сформированный специальным образом пакет, который просто выведет из строя важную информационную систему?
DMA? Вы сказали -- DMA? Извольте! Этот страшный DMA используется не только в компьютерах, но и почти во всех современных микроконтроллерах: старшие модели MSP430, все ATXMEGA, LPC23xx/24xx, все Cortex поголовно! И еще куча других, с которыми я не работал.
Что такое DMA? Как Вы это понимаете? Какие задачи он выполняет? Для чего его пихают? Почему он эффективен только там, где имеется более двух шин для передачи данных?
DMA -- это система. Это набор электронных компонентов, которые, в случае МК, размещаются на одном чипе (die) вместе с памятью и периферийными устройствами. DMA -- это автоинкрементный (*-декрементный -- в зависимости от направления счета) счетчик + несколько регистров. Управляет этим хозяйством проц -- точнее, он программирует (задает) направление счета, задает сколько раз должен "передвинуться" счетчик, задает начальный адрес памяти, задает порт, откуда (или куда) будут складываться данные, задает прерывание по окончании пересылки и т.д. Скажите честно, вы одометр у автомобилей видели? Так вот, это примерно тоже самое -- тупая скотина, которая только и умеет слать туда-сюда данные. Никакого интеллекта. Даже намека на интеллект! Все тупо, как шестеренки в будильнике!
Вам кажется это нелепым? Подумайте ЕЩЁ раз, и ЕЩЁ. Это реальная угроза, вопрос лишь в заинтересованности. И заметим, что злоумышленнику не понадобятся никакие закладки на софтверном или железнячном уровне. Только ну очень въедливое изучение архитектуры. Или слив информации от разработчиков. Вопрос в квалификации и деньгах.
Понимаете, угроза угрозе -- рознь! Ну откуда проц будет знать, что он работает в России, а не в Пендосии? Проц не нмного умнее DMA. Камень камнем! Умным камень делают... сюрприз! -- Программы.
А если в программе ни каких закладок нет, то камень сам по себе приказ не примет и не выполнит.
Если есть реально вопросы, то задавайте. Я с большим удовольствием постараюсь ответить.