Суть вызова: от GDS-файла к паролю
Компания Jane Street опубликовала задачу по реверс-инжинирингу ASIC (Application-Specific Integrated Circuit). Участникам давался GDS-файл — стандартный формат описания геометрии интегральных схем. Задача состояла в том, чтобы понять архитектуру чипа, найти скрытые входы/выходы и, возможно, извлечь зашифрованное сообщение. Конкурс делился на два этапа: разминочный (с подсказками) и основной (полная неизвестность).
Технический стек и инструменты
Автор кейса, инженер из Wunder Fund, столкнулся с необходимостью работать с низкоуровневыми данными. Ключевые инструменты и библиотеки, использованные в процессе:
- gdstk: Python-библиотека для чтения и анализа GDS-файлов. Позволила извлечь структуру ячеек (в разминочном задании их было 27).
- sky130_fd_sc_hd__: Префикс стандартных ячеек библиотеки технологий SkyWater 130nm. Автор использовал документацию sky130-unofficial для расшифровки функционала логических вентилей (AND, OR, NOT и сложных комбинаций).
- VCD-файлы: Text-формат для записи временных диаграмм. Помогли выявить ASCII-символы, включая фразу «TRY AGAIN».
- Surfer Waveform Viewer: Инструмент для визуализации сигналов, замененный кастомным решением.
Ловушка «изобретения велосипеда»
Самый затратный этап занял несколько дней. Автор попытался создать собственный симулятор логических схем на базе sqlite3 и написать парсер для нового языка описания железа. Была создана тестовая обвязка и даже простой просмотрщик GDS на raylib. Однако отладка визуализации и трассировки дорожек отвлекла от главной цели. Итог: отказ от самоделок в пользу готовых инструментов и документации.
Результаты и выводы
После перехода к изучению официальной документации SkyWater 130nm процесс пошел быстрее. Удалось:
- Идентифицировать входы и выходы схемы через анализ трассировки.
- Извлечь текстовые метки из GDS-файлов, преобразовав их в SVG.
- Понять логику работы сложных элементов (например,
o21bai), опираясь на стандарты библиотеки.
Кейс демонстрирует, что реверс-инжиниринг современных чипов — это не только магия, но и кропотливая работа с документацией, стандартами (GDSII, VCD) и понимание физики полупроводников. Полный код решения доступен в репозитории автора на GitHub.
Источник: Habr ↗
