Сохранение содержимого PAL-микросхем

В данной статье речь пойдёт о довольно простом и изящном способе получения прошивки некоторых микросхем программируемой логики (ПЛМ). Этот метод не является взломом в привычном понимании, таком как глитч-атака или УФ-стирание защитного бита (security fuse); уязвимость, позволяющая скопировать прошивку микросхемы, заложена в самом принципе работы этих устройств. Отсюда следуют и ограничения: существенным недостатком такого метода является ограниченность применения и тот факт, что уязвимые модели микросхем производились относительно давно. Тем не менее, такие микросхемы встречаются, и данный метод успешно применяется на практике. К его достоинствам относится простота реализации и отсутствие потребности в дорогостоящем оборудовании.
Микросхемы программируемой логики представляют собой стандартные логические элементы, такие как И
, ИЛИ
, НЕ
, соединённые между собой в виде матрицы. В этой матрице пользователь в процессе программирования микросхемы может выбирать нужные ему соединения, таким образом составляя требуемую логическую схему. Эти микросхемы могут заменить несколько простых логических микросхем (современные ПЛИС способны заменить множество логических элементов), а также позволяют изменять логическую схему после изготовления печатной платы. Эти два фактора определяют использование таких микросхем в электронике.
С момента появления первых подобных микросхем в конце 70-х годов их конструкция претерпела множество изменений. Программируемые логические микросхемы различаются как по типу памяти, хранящей таблицу соединений, так и по устройству логической схемы.
По типу памяти микросхемы можно разделить на следующие варианты:
- Однократно программируемые микросхемы с маской, заложенной при производстве.
- УФ-стираемые микросхемы с кварцевым окошком, пригодные для стирания и повторного программирования.
- Более поздние электрически стираемые микросхемы, которые на данный момент составляют большинство подобных устройств.
По устройству логической схемы:
- PLA (
Programmable Logic Array
) — всегда комбинационные: обе матрицы (И
иИЛИ
) программируемы, что обеспечивает максимальную гибкость. (Например,82S100
). - PAL (
Programmable Array Logic
) — делятся на:- Комбинационные: программируется матрица
И
, а матрицаИЛИ
фиксирована (например,PAL16L8
). - Регистровые: дополнены регистрами для хранения состояния, что усложняет анализ (например,
PAL16R4
,PAL16R6
,PAL16R8
).
- Комбинационные: программируется матрица
- GAL (
Generic Array Logic
) — универсальные устройства: могут эмулировать различные PAL и работать как в комбинационном, так и в регистровом режиме. МатрицаИ
программируется, а выходные логические макроячейки (OLMC) обеспечивают гибкую настройку выходов, включая возможность многократного электрического перепрограммирования (например,GAL16V8
,GAL20V8
).
Данная методика сохранения прошивки подходит только для микросхем, работающих в комбинационном режиме.
Такая избирательность обусловлена тем, что метод основан на переборе всех возможных комбинаций входных значений. Для каждой возможной комбинации входных сигналов сохраняются соответствующие выходные значения, затем на основе этих данных восстанавливаются логические уравнения. Поэтому метод не применим к микросхемам, у которых выходные значения зависят не только от текущих состояний входов, но и от предыдущих состояний (т.е. к регистровым или более сложным схемам). В таком случае количество состояний для перебора будет увеличиваться в геометрической прогрессии.
С технической точки зрения перебор вариантов входных сигналов и сохранение выходных происходит при помощи обыкновенного программатора для микросхем памяти с параллельным интерфейсом и специального адаптера. Входные выводы (пины) логической микросхемы подключаются к адресным линиям программатора, а выходные — к линиям данных. Поскольку выводы PLD могут быть двунаправленными (I/O), их также можно подключать к адресным линиям для чтения их состояния как входов. Затем происходит считывание содержимого, аналогичное чтению обычной микросхемы памяти. В результате в полученном дампе памяти оказываются отклики микросхемы на все возможные комбинации входных сигналов. После чего специальное программное обеспечение (скрипт) анализирует этот двоичный файл и генерирует логические уравнения, которые могут быть повторно скомпилированы для прошивки новой микросхемы.
Расширение метода для работы с более широким ассортиментом микросхем, например, для микросхем, работающих в регистровом режиме, теоретически возможно с определёнными допущениями, но требует детального анализа в каждом конкретном случае. Для современных и сложных FPGA данный метод неприменим из-за их значительно большей сложности и принципиально иной архитектуры.