Реверс-инжиниринг (также известен как обратная инженерия или бэк-инжиниринг) представляет собой метод или процесс, при котором осуществляется попытка понять, с помощью дедуктивного анализа, как ранее созданное устройство, процесс, система или программное обеспечение выполняют свою задачу, при этом имея очень ограниченное (или вовсе отсутствующее) представление о том, как именно это достигается. В зависимости от рассматриваемой системы и используемых технологий, полученные знания в процессе реверс-инжиниринга могут быть полезны для повторного использования устаревших объектов, проведения анализа безопасности или изучения принципов работы какого-либо объекта.
Хотя процесс реверс-инжиниринга специфичен для объекта, на котором он выполняется, все процессы реверс-инжиниринга состоят из трёх основных этапов: извлечение информации, моделирование и анализ. Извлечение информации включает в себя сбор всей релевантной информации, необходимой для выполнения операции. Моделирование заключается в объединении собранной информации в абстрактную модель, которая может быть использована в качестве руководства для проектирования нового объекта или системы. Анализ предполагает детальное изучение полученной модели с целью выявления возможных улучшений или уязвимостей.
Основные области применения
Машины
С развитием компьютерного проектирования (CAD) реверс-инжиниринг стал жизнеспособным методом создания трёхмерной виртуальной модели существующей физической детали для использования в 3D CAD, CAM, CAE или другом программном обеспечении. Процесс реверс-инжиниринга включает в себя измерение объекта, а затем его реконструкцию в виде 3D-модели. Для измерения физического объекта могут использоваться такие технологии, как координатно-измерительные машины (CMM), лазерные сканеры, структурные световые сканеры или промышленная компьютерная томография (CT). Полученные данные обычно представлены в виде облака точек, которое не содержит топологической информации и проектных намерений. Эти данные могут быть преобразованы в треугольную сетку, а затем в аналитические поверхности, такие как плоскости, цилиндры или NURBS-поверхности, для создания модели в формате boundary-representation CAD.
Печатные платы
Реверс-инжиниринг печатных плат включает в себя воссоздание данных для изготовления конкретной платы. Это делается в первую очередь для идентификации дизайна и изучения функциональных и структурных характеристик. Также позволяет выявить принципы проектирования за продуктом, особенно если эта информация недоступна. Устаревшие печатные платы часто подвергаются реверс-инжинирингу, особенно когда они выполняют критически важные функции, такие как питание машин или других электронных компонентов. Реверс-инжиниринг этих старых частей может позволить восстановить плату, если она выполняет какую-то ключевую задачу, а также найти альтернативы, которые обеспечивают ту же функцию, или при обновлении старой платы.
Реверс-инжиниринг печатных плат обычно включает в себя следующие этапы: создание изображений платы с помощью рисования, сканирования или фотографирования; перенос этих изображений в соответствующее программное обеспечение для реверс-инжиниринга с целью создания первоначального дизайна новой платы; и, наконец, создание схемы для цепи с использованием соответствующего инструмента.
Программное обеспечение
В 1990 году Институт инженеров электротехники и электроники (IEEE) определил реверс-инжиниринг программного обеспечения (SRE) как "процесс анализа системы с целью выявления компонентов системы и их взаимосвязей и создания представлений системы в другой форме или на более высоком уровне абстракции", при этом "система" является конечным продуктом разработки программного обеспечения. Реверс-инжиниринг представляет собой процесс только анализа, при котором рассматриваемая система не модифицируется, что в противном случае является реинжинирингом или реструктуризацией. Реверс-инжиниринг может быть выполнен на любом этапе жизненного цикла продукта, не обязательно на функциональном конечном продукте.
Существует два компонента в реверс-инжиниринге: редокументация и восстановление дизайна. Редокументация заключается в создании нового представления компьютерного кода, чтобы его было легче понять. В то время как восстановление дизайна использует дедукцию или рассуждения на основе общего знания или личного опыта продукта для полного понимания функциональности продукта. Это также можно рассматривать как "обратное движение через цикл разработки". В этой модели вывод фазы реализации (в форме исходного кода) подвергается реверс-инжинирингу обратно к фазе анализа, что является инверсией традиционной водопадной модели. Другим термином для этой техники является понимание программы.
Протоколы
Протоколы — это наборы правил, описывающие форматы сообщений и способы их обмена: конечный автомат состояния протокола. Соответственно, задача реверс-инжиниринга протоколов может быть разделена на две подзадачи: реверс-инжиниринг формата сообщений и конечного автомата состояния.
Форматы сообщений традиционно подвергались реверс-инжинирингу с помощью трудоёмкого ручного процесса, который включал анализ того, как реализации протоколов обрабатывают сообщения. Однако недавние исследования предложили ряд автоматических решений. Обычно автоматические подходы группируют наблюдаемые сообщения в кластеры с использованием различных методов кластерного анализа или эмулируют реализацию протокола, отслеживая обработку сообщений.
Существует меньше работ по реверс-инжинирингу конечных автоматов состояния протоколов. В целом, конечные автоматы состояния могут быть изучены либо через процесс офлайн-обучения, который пассивно наблюдает за коммуникацией и пытается построить наиболее общий конечный автомат, принимающий все наблюдаемые последовательности сообщений, либо через онлайн-обучение, которое позволяет интерактивно генерировать последовательности сообщений-запросов и слушать ответы на эти последовательности запросов.
Интегральные схемы/умные карты
Реверс-инжиниринг представляет собой инвазивную и разрушительную форму анализа умной карты. Нападающий использует химические вещества для травления слоя за слоем карты и делает фотографии с помощью сканирующего электронного микроскопа (СЭМ). Эта техника может раскрыть полную аппаратную и программную часть умной карты. Основная проблема для нападающего заключается в том, чтобы привести всё в правильный порядок, чтобы понять, как всё работает. Создатели карты пытаются скрыть ключи и операции, перемешивая позиции памяти, например, с помощью шины.
В некоторых случаях даже возможно прикрепить зонд для измерения напряжений, пока умная карта всё ещё работает. Создатели карты используют сенсоры для обнаружения и предотвращения этой атаки. Эта атака не является очень распространённой, поскольку требует как значительных усилий, так и специального оборудования, которое обычно доступно только крупным производителям микросхем. Кроме того, отдача от этой атаки невелика, поскольку часто используются другие методы безопасности, такие как теневые учётные записи.
Военные приложения
Реверс-инжиниринг часто используется людьми для копирования технологий, устройств или информации других стран, которые были получены регулярными войсками на поле боя или разведывательными операциями. Он часто использовался во время Второй мировой войны и Холодной войны. Ниже приведены некоторые известные примеры с тех времён и позже:
- Канистра Jerry: британские и американские войска во Второй мировой войне заметили, что у немцев есть канистры для бензина с отличным дизайном. Они создали копии этих канистр, которые стали известны как "канистры Jerry".
- Nakajima G5N: в 1939 году компания Douglas Aircraft Company продала свой прототип авиалайнера DC-4E японским авиалиниям, которые тайно действовали как прикрытие для Императорского японского флота, желавшего создать дальнобойный стратегический бомбардировщик, но сталкивавшегося с трудностями из-за неопытности японской авиационной промышленности в производстве тяжёлых дальнобойных самолётов. DC-4E был передан компании Nakajima Aircraft и разобран для изучения; как прикрытие было сообщено, что он разбился в Токийском заливе.
Законность
Соединённые Штаты
В Соединённых Штатах законность реверс-инжиниринга зависит от конкретного контекста и целей. В некоторых случаях реверс-инжиниринг может быть разрешён, особенно если он используется для совместимости, безопасности или образовательных целей. Однако в других случаях, например, при нарушении авторских прав или патентов, реверс-инжиниринг может быть незаконным. Законы, такие как Закон о защите авторских прав в цифровую эпоху (DMCA), содержат положения, ограничивающие реверс-инжиниринг в определённых обстоятельствах.
Европейский Союз
В Европейском Союзе реверс-инжиниринг также регулируется законодательством, которое может варьироваться в зависимости от страны-члена. В некоторых случаях реверс-инжиниринг может быть разрешён для целей совместимости, безопасности или образовательных целей, но в других случаях, например, при нарушении авторских прав или патентов, он может быть запрещён. Европейский Союз имеет директивы, которые регулируют использование программного обеспечения и защиту интеллектуальной собственности, что влияет на практики реверс-инжиниринга.
См. также
- Декомпилятор
- Дизассемблер
- Обфускация
- Восстановление дизайна
- Программная инженерия
- Инженерия требований
- Программная безопасность
Примечания
- Eilam, Eldad